LinqDataSource.Update(IDictionary, IDictionary, IDictionary) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Executa uma operação de atualização.
public:
int Update(System::Collections::IDictionary ^ keys, System::Collections::IDictionary ^ values, System::Collections::IDictionary ^ oldValues);
public int Update (System.Collections.IDictionary keys, System.Collections.IDictionary values, System.Collections.IDictionary oldValues);
member this.Update : System.Collections.IDictionary * System.Collections.IDictionary * System.Collections.IDictionary -> int
Public Function Update (keys As IDictionary, values As IDictionary, oldValues As IDictionary) As Integer
Parâmetros
- keys
- IDictionary
Os valores de chave da linha para os registros a serem atualizados.
- values
- IDictionary
Os valores de linha a serem atualizados na fonte de dados.
- oldValues
- IDictionary
Os valores de linha que são avaliados para detectar conflitos de dados.
Retornos
O número de registros afetados pela operação de atualização.
Exemplos
O exemplo a seguir mostra como atualizar programaticamente um registro na fonte de dados depois que o usuário clica em um botão. O código passa um ListDictionary objeto que contém o valor da chave, um ListDictionary objeto que contém os valores originais e um ListDictionary objeto que contém os novos valores para o Update método.
protected void Reset_Click(object sender, EventArgs e)
{
ListDictionary keyValues = new ListDictionary();
ListDictionary newValues = new ListDictionary();
ListDictionary oldValues = new ListDictionary();
keyValues.Add("ProductID", int.Parse(((Label)DetailsView1.FindControl("IDLabel")).Text));
oldValues.Add("ProductName", ((Label)DetailsView1.FindControl("NameLabel")).Text);
oldValues.Add("ProductCategory", ((Label)DetailsView1.FindControl("CategoryLabel")).Text);
oldValues.Add("Color", ((Label)DetailsView1.FindControl("ColorLabel")).Text);
newValues.Add("ProductName", "New Product");
newValues.Add("ProductCategory", "General");
newValues.Add("Color", "Not assigned");
LinqDataSource1.Update(keyValues, newValues, oldValues);
DetailsView1.DataBind();
}
Protected Sub Add_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim keyValues As New ListDictionary()
Dim newValues As New ListDictionary()
Dim oldValues As New ListDictionary()
keyValues.Add("ProductID", Int32.Parse(CType(DetailsView1.FindControl("IDLabel"), Label).Text))
oldValues.Add("ProductName", CType(DetailsView1.FindControl("NameLabel"), Label).Text)
oldValues.Add("ProductCategory", CType(DetailsView1.FindControl("CategoryLabel"), Label).Text)
oldValues.Add("Color", CType(DetailsView1.FindControl("ColorLabel"), Label).Text)
newValues.Add("ProductName", "New Product")
newValues.Add("ProductCategory", "General")
newValues.Add("Color", "Not assigned")
LinqDataSource1.Update(keyValues, newValues, oldValues)
DetailsView1.DataBind()
End Sub
O exemplo a seguir mostra a marcação do exemplo anterior.
<asp:LinqDataSource
ContextTypeName="ExampleDataContext"
TableName="Products"
EnableUpdate="true"
ID="LinqDataSource1"
runat="server">
</asp:LinqDataSource>
<asp:DetailsView
DataSourceID="LinqDataSource1"
AllowPaging="True"
ID="DetailsView1"
runat="server"
AutoGenerateRows="False">
<Fields>
<asp:templatefield HeaderText="Product ID">
<itemtemplate>
<asp:Label ID="IDLabel" runat="server" Text='<%# Bind("ProductID") %>'></asp:Label>
</itemtemplate>
</asp:templatefield>
<asp:templatefield HeaderText="Product Name">
<itemtemplate>
<asp:Label ID="NameLabel" runat="server" Text='<%# Bind("ProductName") %>'></asp:Label>
</itemtemplate>
</asp:templatefield>
<asp:templatefield HeaderText="Category">
<itemtemplate>
<asp:Label ID="CategoryLabel" runat="server" Text='<%# Bind("ProductCategory") %>'></asp:Label>
</itemtemplate>
</asp:templatefield>
<asp:templatefield HeaderText="Color">
<itemtemplate>
<asp:Label ID="ColorLabel" runat="server" Text='<%# Bind("Color") %>'></asp:Label>
</itemtemplate>
</asp:templatefield>
</Fields>
</asp:DetailsView>
<asp:button
ID="Button1"
Text="Reset with default values"
runat="server"
onclick="Reset_Click" />
<asp:LinqDataSource
ContextTypeName="ExampleDataContext"
TableName="Products"
EnableUpdate="true"
ID="LinqDataSource1"
runat="server">
</asp:LinqDataSource>
<asp:DetailsView
DataSourceID="LinqDataSource1"
AllowPaging="True"
ID="DetailsView1"
runat="server" AutoGenerateRows="False">
<Fields>
<asp:templatefield HeaderText="Product ID">
<itemtemplate>
<asp:Label ID="IDLabel" runat="server" Text='<%# Bind("ProductID") %>'></asp:Label>
</itemtemplate>
</asp:templatefield>
<asp:templatefield HeaderText="Product Name">
<itemtemplate>
<asp:Label ID="NameLabel" runat="server" Text='<%# Bind("ProductName") %>'></asp:Label>
</itemtemplate>
</asp:templatefield>
<asp:templatefield HeaderText="Category">
<itemtemplate>
<asp:Label ID="CategoryLabel" runat="server" Text='<%# Bind("ProductCategory") %>'></asp:Label>
</itemtemplate>
</asp:templatefield>
<asp:templatefield HeaderText="Color">
<itemtemplate>
<asp:Label ID="ColorLabel" runat="server" Text='<%# Bind("Color") %>'></asp:Label>
</itemtemplate>
</asp:templatefield>
</Fields>
</asp:DetailsView>
<asp:button
ID="Button1"
Text="Reset with default values"
runat="server"
onclick="Add_Click" />
Comentários
Normalmente, você não precisa chamar o método do Update código. O controle associado a dados chamará automaticamente o Update método quando o usuário tomar medidas para atualizar um registro. Você chama explicitamente o Update método quando deseja criar seu próprio processo para atualizar dados.