Verificando duas dúzias de valores, caixas de texto contra datacolumns, algoritmicamente

StackOverflow https://stackoverflow.com/questions/606378

Pergunta

Ok, grandes cérebros aqui está algo mais um desafio do que um requisito. Estou um pouco perplexo. Normalmente, eu só preciso de um produto na direção certa, então prepare seus palitos de cutucção.

Eu tenho um tabcontrol coberto em caixas de texto. Quero executar uma verificação do conteúdo de todas as caixas de texto durante o evento SelectedIndexchanged em uma ListView no mesmo formulário. Se uma das caixas de texto tiver dados diferentes de uma linha DataTable - representada pelo item ListView - quero que ele pergunte se o usuário gostaria de manter a alteração que acabou de fazer. Se nada mudou, quero que ele apenas mude a seleção.

Então, obviamente, estou comparando o conteúdo das caixas de texto com colunas associadas no Dataarow.

Eu poderia apenas forçar o cheque e fazer uma verificação individual uma de cada vez. Eu preferiria criar uma maneira algorítmica inteligente de andar de bicicleta pelas caixas de texto TabControl e verificar os valores em relação aos valores colunares.

Alguma sugestão?

EDIT: Gosto da solução "Clearly nomeada TextBoxes" abaixo, embora ambos sejam bons. Se ninguém mais tiver uma idéia melhor nos próximos 14 dias, a resposta da caixa de texto fica o verde.

Foi útil?

Solução

Dê às caixas de texto um nome inteligente, pois em uma parte do nome é o nome da coluna/linha.

Agrupe a caixa de texto controla um loop através deles. Para cada controle, obtenha o nome (parte) e use -o como referência ao seu Datatable. Verifique os valores.

Outras dicas

Se eu estou entendendo o que você quer, você deseja comparar todas as caixas de texto em todas as alterações, a favor de apenas verificar as caixas de texto que são alteradas, impulsionadas pelo evento selecionado Indexchanged do Controle da ListView. Isso está certo?

Bem, os Datarows e Datatables já têm versão em linha e reversão implementados; portanto, se você vincular as caixas de texto à linha subjacente (seja escrevendo eventos para escrever de volta no foco de mudança/perda ou usando um mecanismo automatizado para realizar a mesma tarefa), Em seguida, verifique a propriedade RowState em selectedIndexchanged. Se o RowState não for inalterado, solicite que o usuário salve. Se ele salvar, comprometa as mudanças, rejeite -as.

Então, por exemplo, você gostaria de algo assim no seu manipulador de eventos selecionado Indexchanged:

if (row.RowState == DataRowState.Modified) {
  // prompt for user input
  if (promptResult == PromptResult.Save) {
    row.AcceptChanges();
  }
  else {
    row.RejectChanges();
  }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top