KeyField no GridView


Na versão 1.x do .NET Framework/ASP.NET, temos no DataGrid, a propriedade DataKeyField. Esta é utilizada para definirmos um campo da nossa fonte de dados (DataSource) que identificará como único aquele item/registro. Na maior parte das vezes é representado pelo campo Primary Key da Tabela.

Bastava definir uma coluna (uma única coluna/campo) na propriedade DataKeyField, e já conseguimos resgatar o índice deste item da seguinte forma:

     Dim userID As Integer = Convert.ToInt32(Me.dgUsers.DataKeys(N))
     Response.Write(userID)

Onde N é um número inteiro que representa a linha qual voce deseja recuperar o Key Field.

Agora no ASP.NET 2.0, no controle GridView, temos ainda essa propriedade, mas com um nome um pouco diferente: DataKeyNames. Como podemos reparar, ela não permite só um campo, mas sim, um array de strings, contendo o nome das colunas/campos que desejar definir para poder identificar o registro. Os campos são separados por vírgula (“,”), exemplo:

     <asp:GridView …. DataKeyNames=”ID, AnotherID”></asp:GridView>

E para recuperar, resgatamos uma coleção de “chave-valor” que nos é retornado através da propriedade Values do DataKey:

     Dim keys As DataKey = Me.GridView1.DataKeys(N)
     For Each d As DictionaryEntry In keys.Values
          Response.Write(d.Key.ToString() & “: ” & d.Value.ToString() & “<BR>”)
     Next

Onde N é um número inteiro que representa a linha qual voce deseja recuperar o DataKey.

Apesar desta funcionalidade, eu particularmente nunca precisei ter mais de um campo para identificar a linha do meu controle.

Anúncios

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s