Datagridview em RowLeave não atribuir valores adequados para booleans

votos
2

Eu tenho um DataViewGrid I povoada a partir de um DataTable em uma consulta a um DB. Ao tentar capturar o evento Row_Leave, para que eu pudesse atualizá-lo corretamente, eu não consigo capturar o último valor em colunas boolean.

Se eu atualizar apenas um campo de texto, quando eu acessar o DataSource subjacente eu recebo o valor mais recente entrei, comprar se eu acessar o boolean, eu recebo o valor anterior.

Eu estou acessando as linhas como este:

if (allCorrect)
{
    if (((DataRowView)dgView.Rows[e.RowIndex].DataBoundItem).IsNew)
    {                        
       this.InsertEntry((DataRow)((DataRowView)dgView.Rows[e.RowIndex].DataBoundItem).Row);
    }
    else
    {                        
        this.UpdateEntry((DataRow)((DataRowView)dgView.Rows[e.RowIndex].DataBoundItem).Row);
    }
 }

(Maneira bastante complicado para acessar a linha subjacente, mas funciona apenas como acessar a origem de dados do DGV, por isso não é o problema.)

Alguma ideia?

EDIT : eu reduzi a questão ao chamado caso adequado. Parece que RowLeave é chamado antes EndCellEdit e até mesmo CellValueChanged . Portanto, a linha nunca recebe a atualização de status (a ser atualizado no DB) e não fazê-lo. Posso alterar a ordem desses eventos (como para funcionar corretamente)? Eu descobri este é um problema conhecido que deveria mudar em Orcas, mas nunca o fez.

Publicado 23/07/2009 em 14:05
fonte usuário
Em outras línguas...                            


1 respostas

votos
3

Ok, tenho uma solução alternativa lo.

Depois de verificar se ele precisa ser atualizado com:

        if(!(dgView.IsCurrentCellDirty))
        {
            return;
        }

Eu faço um CommitEdit para aplicar as alterações da célula (dos quais evento não tem happend ainda devido ao bug mencionado) com

        dgView.CommitEdit(0);

e quando o o atualizado / inserção acontece, a linha terá os valores mais recentes.

Respondeu 23/07/2009 em 15:08
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more