Como esvaziar as células de uma DataGridView em C #?
-
10-07-2019 - |
Pergunta
Eu encontrei perguntas semelhantes sobre SO já, todo o líquido na verdade. Embora eu não tenha encontrado uma resposta funcionando ainda.
Então, eu estou trabalhando em um windows formulário de inscrição usando o Visual Studio 2008. A linguagem é C #
Eu tenho um DataGridView que é não ligado a uma fonte de dados.
forma:
MyDataGridView.DataSource = null;
não vai funcionar ...
Eu também tentei
MyDataGridView.Rows.Clear();
Mas isso remove todos os meus personalizados feitos linhas.
Então, agora estou procurando uma maneira de simplesmente esvaziar o conteúdo de todas as células (não incluindo células de cabeçalho). Por isso não deve afetar qualquer outra coisa, mas o conteúdo das células em si.
Solução 2
Eu só descobri como fazer isso sozinho, eu simplesmente ciclo através da mesa, limpando todas as células I encontro.
Nota: "dgUsers" é o nome do meu DataGridView
for (int i = 0; i < dgUsers.Columns.Count ;i++ )
{
for (int j = 0; j < dgUsers.Rows.Count; j++)
{
dgUsers.Rows[j].Cells[i].Value = "";
}
}
Eu aposto que há uma maneira melhor de fazer isso e isso pode parecer um pouco desleixado, mas ele faz o trabalho. No entanto, eu gostaria de ouvir uma solução melhor que apura os dados.
Outras dicas
for (int i = 0; i < MyDataGridView.Columns.Count ;i++ )
{
for (int j = 0; j < MyDataGridView.Rows.Count; j++)
{
MyDataGridView.Rows[j].Cells[i].Value = DBNull.Value;
}
}
O código por não funcionavam pieter888 trabalhou para mim o código eu descobri era
int cnt=dataGridView1.Rows.Count;
for (int i = 0; i < cnt; i++)
{
dataGridView1.Rows.Remove(dataGridView1.Rows[0]);
}
Eu acredito que o uso de LINQ você pode torná-lo mais limpo, especialmente com os tipos implícitos:
foreach (var cell in from DataGridViewRow row in dgv.Rows from DataGridViewCell cell
in row.Cells select cell){
cell.Value = string.Empty;
}
você pode limpar toda a grade usando
gridviewname.columns.clear();