Pergunta

Eu estou escrevendo um front-end simples protótipo usando um GridView que é preenchido via função, em vez de ser ligada diretamente a uma fonte de dados SQLServer.

Assim eu posso excluir uma linha / registro de grid / banco de dados subjacente Estou atualmente

  1. Definir a AutoGenerateDeleteButton = true
  2. Exibindo os IDs de registro únicas na primeira coluna
  3. Manipulação o evento RowDeleting
  4. A obtenção da ID, obtendo os grid.Rows [e.RowIndex] .Cells [idIndex] .Text
  5. Passando esse número por meio de uma função que faz o apagamento

Este parece estar funcionando muito bem, mas eu prefiro não exibir os ids para os usuários a fazer qualquer coisa não significa para eles.

Eu tentei configuração propriedade Visible da coluna id como falso, mas este passo 4 acima causados ??a devolver uma cadeia vazia - e assim não há registro excluído

.

Então, como faço para armazenar o número do ID hidded com cada linha?

Ou eu estou lidando com isso de forma completamente errada?

Siga até respostas:

Obrigado por ambas as respostas, acabou indo maneira DataKeyNames de Eric. Para outras pessoas novas para ASP.NET como eu sou, os passos que eu usei onde

  • Entre as linhas onde as grelhas definidos fonte de dados e chamado DataBind (), I adicionou

    grid.DataKeyNames = new string[] {"id"};

  • Em seguida, na função de manipulação do RowDeleting eu tenho de segurar a minha id usando

    grid.DataKeys[e.RowIndex].Value

Foi útil?

Solução

GridView tem uma propriedade DataKeyNames. Quando você vincular uma fonte de dados para a rede, você define as DataKeyNames (geralmente com apenas um nome, seu campo PK). Você não mostram o PK, mas você pode obtê-lo a partir do código-behind.

Outras dicas

Visible = false significa não aparecerem na página. O que você quer ou é para torná-lo um campo de modelo e usar um HiddenField para manter o valor ou definir o estilo do controle para "display: none;". Este seria o caso se o código do lado do cliente precisava de acesso ao valor de uma chamada Ajax ou algo assim.

Caso contrário, use a propriedade DataKeyNames como @Eric Z Beard sugere.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top