GridView.DataKeyNames Propriedade
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.
Obtém ou define uma matriz que contém os nomes dos campos de chave primária para os itens exibidos em um controle GridView.
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 da propriedade
Uma matriz que contém os nomes dos campos de chave primária para os itens exibidos em um controle GridView.
- Atributos
Exemplos
O exemplo a seguir demonstra como usar a DataKeyNames propriedade para especificar o campo de chave da fonte de dados. No exemplo, o DataKeyNames
atributo do GridView
elemento na marcação especifica dois campos de chave usando uma vírgula para separar os nomes. Para executar este exemplo, crie um site que tenha o seguinte:
Uma conexão com o banco de dados de exemplo AdventureWorksLT e uma cadeia de conexão chamada
AdventureWorksLTConnectionString
. Para obter informações sobre como configurar o banco de dados de exemplo AdventureWorksLT, consulte Como configurar um banco de dados de exemplo AdventureWorksLT para desenvolvimento de ASP.NET.Uma classe de contexto de dados LINQ-to-SQL chamada
AdventureWorksLTDataClassesDataContext
. O contexto de dados deve ter uma classe para a tabela SalesOrderDetails. Para obter informações sobre como criar classes LINQ-to-SQL, consulte LINQ to 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>
Comentários
Use a DataKeyNames propriedade para especificar o campo ou os campos que representam a chave primária da fonte de dados. Você só deve definir essa propriedade para o campo ou campos necessários para identificar exclusivamente cada linha; por exemplo, a coluna ID se um valor inteiro identificar exclusivamente cada linha. Você deve definir a DataKeyNames propriedade para que os recursos de atualização automática e exclusão do GridView controle funcionem. Os valores desses campos de chave são passados para o controle da fonte de dados para especificar a linha a ser atualizada ou excluída.
Se você precisar recuperar o valor da chave de dados ao atualizar ou excluir uma linha, use a Keys
propriedade da GridViewUpdateEventArgs classe ou GridViewDeleteEventArgs . Por exemplo, e.Keys[0]
contém o valor da primeira chave de dados em um RowUpdating manipulador de eventos ou RowDeleting .
Se você precisar recuperar o valor da chave de dados quando uma linha for selecionada, use a SelectedDataKey propriedade .
Quando a DataKeyNames propriedade é definida, o GridView controle preenche automaticamente sua DataKeys coleção com os valores do campo ou campos especificados, o que fornece uma maneira conveniente de acessar as chaves primárias de cada linha.
Observação
O GridView controle armazena esses valores de campo de chave no estado de controle. Se esses valores contiverem informações confidenciais, é altamente recomendável habilitar a criptografia de estado de exibição definindo a ViewStateEncryptionMode propriedade como ViewStateEncryptionMode.Always
.
Quando você usa colunas de campo geradas automaticamente (definindo a AutoGenerateColumns propriedade como true
), o GridView controle garante que as colunas que correspondem ao campo ou campos especificados na DataKeyNames propriedade sejam somente leitura.
Se a Visible propriedade de um campo de coluna estiver definida como false
, a coluna não será exibida no GridView controle e os dados da coluna não fizerem uma viagem de ida e volta para o cliente. Se você quiser que os dados de uma coluna que não esteja visível estejam disponíveis para o cliente, adicione o nome do campo à DataKeyNames propriedade .