Embora o ASP.NET DataGrid seja conhecido como um controle de tabela muito bom, não podemos elogiar a função de edição do DataGrid. Tomando a função de envio de dados do DataGrid como exemplo, há de fato um grande problema: no DataGrid, cada Para editar uma linha. , você deve enviar uma linha, que é a chamada "edição de linha única, envio de linha única. Nesse caso, se muitas linhas forem editadas, não apenas a operação do usuário será complicada, mas também causará acesso frequente". para o servidor, reduzindo bastante a eficiência do sistema.
Claro que existe uma solução ressuscitada, que é transferir o conteúdo a ser editado para outras páginas e editá-lo no TextBox. No entanto, se você pensar bem, esse método não está enganando a si mesmo. Além disso, quando editamos na grade, nem sempre podemos usar a tecla Tab para pular entre a grade (TextBox). programadores desperdicem muita energia no desenvolvimento.
Como resolver os problemas acima? Agora recomendo para vocês um DataGrid doméstico que estou usando: SmartGrid (pode ser baixado da Sky Software Station: http://www.skycn.com/soft/23547.html ). Agora vamos discutir o método de envio de várias linhas do SmartGrid: O SmartGrid não possui colunas de botão no DataGrid. Em vez disso, o formulário inteiro possui apenas um botão de envio. Independentemente de você alterar uma linha ou várias linhas, você pode enviá-las todas de uma vez. , como segue Vamos dar uma olhada em alguns exemplos:
Exemplo:
A imagem acima é um exemplo melhor de edição. O exemplo mostra que você pode editar várias linhas ou uma linha e depois enviá-las juntas.
Código:
Modifique o código do botão:
private void btonSave_Click(object sender, System.EventArgs e)
{
this.DataGrid1.ReadOnly = false;//Entre editando
this.DataGrid1.AllowAdd = true;//Permitir adicionar
this.DataGrid1.AllowDelete = true; //Permitir exclusão
}
Este código é um atributo exclusivo do smartgrid. Você pode definir várias funções para adicionar, excluir, editar
e salvar o código do botão:
private void Button2_Click(objeto remetente, System.EventArgs e)
{
DataTable t = (DataTable)this.SmartGrid1.DataSource;
this.sqlDataAdapter1.Update
(t.Clear
())
; .SmartGrid1.DataSource = t;
}
Isso serve para enviar os dados ao banco de dados como um todo. Essa abordagem é adequada para grandes quantidades de dados.
Também existe uma maneira de enviar os dados ao
código do servidor linha por linha
. btonSave_Click(objeto remetente, System. EventArgs e)
{
DataTable
tb=(DataTable)this.SmartGrid1.DataSource
[] parâmetros=new SqlParameter[5
]
;
SqlParameter("@customerId", ""+dr[1]+"");
parâmetros
[1]=new SqlParameter("@nomedaempresa",""+dr[0]+"");
SqlParameter("@contactName", ""+dr[2]+"");
parâmetros
[3]=new SqlParameter("@contactTitle",""+dr[3]+"");
SqlParameter("@address", ""+dr[4]+"");
//
EamPd é uma classe. Execute é uma função para executar procedimentos armazenados.
",parâmetros);
}
}