none
TextBox travado com DataBindings RRS feed

  • Pergunta

  • Pessoal tentei inúmeras maneiras ja, mas não vou citá-las para que vocês opinem mesmo se forem iguais a que ja tentei.

    Minha situação: possuo uma tela com um DataSet e um BindingSource que está vinculado com este DataSet. O BindingSource está referenciado em um DataGridView. Quando a pessoa clica em um botão pega a linha atual: DataRow row = (this.bds.Current as DataRowView).Row; e passo para uma outra tela o DataRow no construtor.
    Estou trabalhando com DataSet tipado mas omitirei isso.
    Nessa outra tela faço os DataBindings nos TextBox como por exemplo: this.txtName.DataBindinds.Add("Text", this.row, "Name");
    Muito bem até agora. O problema.

    Suponhamos que a pessoa escolheu uma linha e passei para outra tela. Essa pessoa então edita o txtName, ela reflete no DataSet, e então ela confirma. Então ela decide editar novamente aquela linha, antes de salvar no banco, então ao editar o txtName novamente ele simplesmente trava, não consigo sair do TextBox. A coluna é string, o e o DataRow não possui nenhum erro.
    Ele entra no evento de Validating mas não no Validated.

    Eu acho que seja um bug do VS. Ja tentei this.row.BeginEdit(), ja tentei no Form anterior this.bds.BeginEdit(). Sei que ele faz isso automaticamente, mas tentei por desencargo de consciência.

    Bom não sei mais o que fazer, estou pensando em reportar para a Microsoft, porém decidi postrar aqui antes.

    Obrigado.
    sábado, 21 de novembro de 2009 22:47

Respostas

  • Esqueci de finalizar esse post.

    O problema era que estava usando um campo data. E quando era colocada uma data inválida (não sei como, porque eu estava usando o DatePicker) ele travava o campo. Apenas adicionei o format do DataBindings como "dd/MM/yyyy" e o problema foi resolvido.

    Obrigado pessoal.

    quarta-feira, 4 de agosto de 2010 18:17

Todas as Respostas

  • Olá Murilo,


    Sem olhar o código é um pouco mais difícil de descobrir o que acontece, mas aparentemente após a primeira edição, faltou atualizar o TableAdapter para gravar a edição no banco de dados.

    Também é interessante percorrer o dataset e verificar o status da linha (RowState) antes de editá-lo novamente.

    Se possível, poste essa parte do código para auxiliá-lo melhor.



    Abs,


    Ricardo Vano
    • Editado Ricardo Vano terça-feira, 1 de dezembro de 2009 12:47 ...
    terça-feira, 1 de dezembro de 2009 12:46
  • Ola Murilo.

    O Binding ocorre no evento validate...
    Se o usuario altera o txtname e depois clica em um botao, se tu nao chamares explicitamente this.validate() em teoria não deve refletir no dataset.

    Espero ter ajudado.
    quarta-feira, 23 de dezembro de 2009 19:44
  • Tenta fazer um BeginEdit no evento GotFocus do seu TextBox (ou Enter.... essas coisas mudam tando de uma plataforma para outra q nunca lembro de cor)


    What would Brian Boitano do ? ((2B || !2B) is Question) ?
    quarta-feira, 23 de dezembro de 2009 20:29
    Moderador
  • Esqueci de finalizar esse post.

    O problema era que estava usando um campo data. E quando era colocada uma data inválida (não sei como, porque eu estava usando o DatePicker) ele travava o campo. Apenas adicionei o format do DataBindings como "dd/MM/yyyy" e o problema foi resolvido.

    Obrigado pessoal.

    quarta-feira, 4 de agosto de 2010 18:17