Pergunta

Como posso evitar item de BindingSource atual de mudar? (Não há nenhuma mudança evento com cancelar argumento ...)

Este é cenário:

  • Eu tenho um DataGridView, e caixas de texto no mesmo formulário.
  • Eu estou usando caixas de texto para alterar os valores na fonte de dados (com ligação de dados padrão)
  • Ligações são escritos manualmente (Após salvar botão é clicado)

  • Quando o usuário seleciona outra linha usando DataGridView, bindingSource.Current propery é alterado, e caixas de texto são atualizados com os valores da linha selecionada. Alterações que o usuário inseriu são perdidas.

Existe alguma maneira de evitar esse problema?

posso evitar bindingSource.Current propriedade de mudar?

Existe alguma opção melhor para evitar este comportamento?

(incapacitante dataGridView não é unfortinutelly uma opção)

Foi útil?

Solução

Parece que você não quer não a mudança bindingSource.Current, mas sim que você deseja salvar o conteúdo das caixas de texto antes de alterar a linha atual? Se você obrigado a coleção não ao bindingSource, em seguida, fazer as caixas de texto referem-se a propriedades no elemento atual em que a coleta?

Eu não sou realmente certo o que você está tentando fazer, mas um tiro no escuro poderia ser a de vincular a mesma DataSource a dois objetos BindingSource diferentes, algo como isto:

gridBindingSource.DataSource = theDataSource;
textBoxBindingSource.DataSource = theDataSource;
myDataGrid.DataSource = gridBindingSource;
firstNameTextBox.Bindings.Add (new Binding ("Text", textBoxBindingSource, "FirstName"));

mas isso seria estranho, porque se theDataSource é apropriado para um controle de grade, então é uma coleção de coisas que têm uma propriedade FirstName. Talvez se você fosse mais específico na sua pergunta.


ETA:. Se você quiser salvar o conteúdo da caixa de texto para a linha atual, ValidateChildren () chamada no recipiente antes de as alterações de propriedade bindingSource.Current

Outras dicas

Eu tenho um quadro um pouco semelhante com ambos grade e caixas de texto na mesma forma. Quando o usuário clica no botão Editar (ou adicionar), eu simplesmente desativar o próprio ...

controle gridview

MyDataGrid.Enabled = false;

continuar a editar ..

Em seguida, no SAVE, se tudo estiver ok,

MyDataGrid.Enabled = true;

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