Pergunta

Eu estou de repente volta para WinForms, depois de anos de desenvolvimento web, e estou tendo problemas com algo que deveria ser simples.Eu tenho um ArrayList de objetos de negócio vinculado a um Windows Forms DataGrid.Eu gostaria que o usuário poderá editar as células, e, quando terminar, pressione um botão de Salvar.Em que ponto que eu gostaria de iterar todas as linhas e colunas na DataGrid para localizar todas as alterações e salvá-los para o banco de dados.Mas eu não consigo encontrar uma maneira de acessar o DataGrid linhas.

Eu também vou para validar as células individuais em tempo real, como eles são editados, mas eu tenho certeza de que pode ser feito.(Talvez não com um ArrayList como o DataSource?) Mas como para iterar a DataGrid, Eu estou muito surpreso que não parece possível.

Devo realmente coisas do meu negócio de objetos de dados em tabelas, a fim de usar o datagrid?

Foi útil?

Solução

foreach(var row in DataGrid1.Rows)
{
  DoStuff(row);
}
//Or ---------------------------------------------   
foreach(DataGridRow row in DataGrid1.Rows)
{
  DoStuff(row);
}
//Or ---------------------------------------------
for(int i = 0; i< DataGrid1.Rows.Count - 1; i++)
{
  DoStuff(DataGrid1.Rows[i]);
}

Outras dicas

object cell = myDataGrid[row, col];

Existe alguma coisa sobre WinForms 3.0 que é muito melhor do que em 1.1

Eu não sei sobre 3.0, mas você pode escrever o código no VS 2008, que é executado no .NET framework 2.0.(Então, você começa a usar a mais recente linguagem C#, mas você só pode usar as bibliotecas 2.0)

Este faz com que você Genéricos (List<DataRow> em vez de os GodAwful ArrayLists) e uma tonelada de outras coisas, você vai, literalmente, acaba escrevendo 3x menos código.

Aha, eu estava apenas me testando todos mais uma vez!:) A verdadeira resposta é, você raramente precisará para iterar o datagrid.Porque mesmo quando a ligação a um ArrayList, a ligação é de 2 vias.Ainda assim, é útil para saber como itereate a grade diretamente, ele pode salvar algumas linhas de código e, em seguida,.

Mas _anna_cris e Orion deu a melhor resposta:Convencer os parceiros a mover-se para uma versão superior do C#, para poupar custos de desenvolvimento e aumentar a capacidade de manutenção e extensability.

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