GridView.DataKeyNames Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Obtém ou define um array que contém os nomes dos campos de chave primária para os itens apresentados num GridView controlo.
public:
virtual property cli::array <System::String ^> ^ DataKeyNames { cli::array <System::String ^> ^ get(); void set(cli::array <System::String ^> ^ value); };
[System.ComponentModel.TypeConverter(typeof(System.Web.UI.WebControls.StringArrayConverter))]
public virtual string[] DataKeyNames { get; set; }
[<System.ComponentModel.TypeConverter(typeof(System.Web.UI.WebControls.StringArrayConverter))>]
member this.DataKeyNames : string[] with get, set
Public Overridable Property DataKeyNames As String()
Valor de Propriedade
Um array que contém os nomes dos campos de chave primária dos itens apresentados num GridView controlo.
- Atributos
Exemplos
O exemplo seguinte demonstra como usar a DataKeyNames propriedade para especificar o campo-chave da fonte de dados. No exemplo, o atributo DataKeyNames do GridView elemento na marcação especifica dois campos-chave usando uma vírgula para separar os nomes. Para executar este exemplo, crie um site que tenha o seguinte:
Uma ligação à base de dados de exemplos AdventureWorksLT e um cadeia de ligação chamado
AdventureWorksLTConnectionString. Para informações sobre como configurar a base de dados de exemplo AdventureWorksLT, consulte Como: Configurar uma Base de Dados de Exemplo AdventureWorksLT para Desenvolvimento ASP.NET.Uma classe de contexto de dados LINQ-para-SQL chamada
AdventureWorksLTDataClassesDataContext. O contexto de dados deve ter uma classe para a tabela SalesOrderDetails. Para informações sobre como criar classes LINQ-para-SQL, veja LINQ para SQL.
<asp:LinqDataSource ID="LinqDataSource1" runat="server"
ContextTypeName="AdventureWorksLTDataClassesDataContext"
EnableDelete="True" EnableInsert="True" EnableUpdate="True"
TableName="SalesOrderDetails">
</asp:LinqDataSource>
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False"
DataKeyNames="SalesOrderID,SalesOrderDetailID"
DataSourceID="LinqDataSource1">
<Columns>
<asp:CommandField ShowDeleteButton="True"
ShowEditButton="True" />
<asp:BoundField DataField="SalesOrderID"
HeaderText="SalesOrderID" ReadOnly="True"
SortExpression="SalesOrderID" />
<asp:BoundField DataField="SalesOrderDetailID"
HeaderText="SalesOrderDetailID" InsertVisible="False"
ReadOnly="True" SortExpression="SalesOrderDetailID" />
<asp:BoundField DataField="OrderQty"
HeaderText="OrderQty" SortExpression="OrderQty" />
<asp:BoundField DataField="ProductID"
HeaderText="ProductID" SortExpression="ProductID" />
<asp:BoundField DataField="UnitPrice"
HeaderText="UnitPrice" SortExpression="UnitPrice" />
<asp:BoundField DataField="ModifiedDate"
HeaderText="ModifiedDate" SortExpression="ModifiedDate" />
</Columns>
</asp:GridView>
<asp:LinqDataSource ID="LinqDataSource1" runat="server"
ContextTypeName="AdventureWorksLTDataClassesDataContext"
EnableDelete="True" EnableInsert="True" EnableUpdate="True"
TableName="SalesOrderDetails">
</asp:LinqDataSource>
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False"
DataKeyNames="SalesOrderID,SalesOrderDetailID"
DataSourceID="LinqDataSource1">
<Columns>
<asp:CommandField ShowDeleteButton="True"
ShowEditButton="True" />
<asp:BoundField DataField="SalesOrderID"
HeaderText="SalesOrderID" ReadOnly="True"
SortExpression="SalesOrderID" />
<asp:BoundField DataField="SalesOrderDetailID"
HeaderText="SalesOrderDetailID" InsertVisible="False"
ReadOnly="True" SortExpression="SalesOrderDetailID" />
<asp:BoundField DataField="OrderQty"
HeaderText="OrderQty" SortExpression="OrderQty" />
<asp:BoundField DataField="ProductID"
HeaderText="ProductID" SortExpression="ProductID" />
<asp:BoundField DataField="UnitPrice"
HeaderText="UnitPrice" SortExpression="UnitPrice" />
<asp:BoundField DataField="ModifiedDate"
HeaderText="ModifiedDate" SortExpression="ModifiedDate" />
</Columns>
</asp:GridView>
Observações
Use a DataKeyNames propriedade para especificar o campo ou campos que representam a chave primária da fonte de dados. Deve definir esta propriedade apenas para o campo ou campos necessários para identificar unicamente cada linha; por exemplo, a coluna ID se um valor inteiro identifica unicamente cada linha. Deve definir a DataKeyNames propriedade para que as funcionalidades automáticas de atualização e eliminação do GridView controlo funcionem. Os valores destes campos-chave são passados para o controlo de fonte de dados para especificar a linha a atualizar ou eliminar.
Se precisares de recuperar o valor da chave de dados ao atualizar ou eliminar uma linha, usa a Keys propriedade da GridViewUpdateEventArgs classe ou GridViewDeleteEventArgs . Por exemplo, e.Keys[0] detém o valor da primeira chave de dados num RowUpdating handler de eventos de OR RowDeleting .
Se precisar de recuperar o valor da chave de dados quando uma linha é selecionada, use a SelectedDataKey propriedade.
Quando a DataKeyNames propriedade é definida, o controlo GridView preenche automaticamente a sua DataKeys coleção com os valores do campo ou campos especificados, o que proporciona uma forma conveniente de aceder às chaves primárias de cada linha.
Note
O GridView controlo armazena estes valores-chave do campo no estado de controlo. Se estes valores conterem informação sensível, é fortemente recomendado que ative a encriptação do estado de visualização definindo a ViewStateEncryptionMode propriedade para ViewStateEncryptionMode.Always.
Quando usa colunas de campo geradas automaticamente (definindo a AutoGenerateColumns propriedade para true), o GridView controlo garante que as colunas que correspondem ao campo ou campos especificados na DataKeyNames propriedade são apenas de leitura.
Se a Visible propriedade de um campo de coluna estiver definida para false, a coluna não é exibida no GridView controlo e os dados da coluna não fazem uma viagem de ida e volta ao cliente. Se quiser que os dados de uma coluna que não é visível estejam disponíveis para o cliente, adicione o nome do campo à DataKeyNames propriedade.