ERRO NA GRID
estou passando uma dificuldade de tentar resolver este problema
quando tento organizar o campo pelo datagrid numa determinada coluna aparece o erro
System.ArgumentException: "Object must be of type String."
Isso somente aparece quando uma célula está fazia, quando não está vazia organiza normal, o problema não da para colocar um breakpoint e identificar, porque não está na leitura dos dados.
alguma ideia que pode ajudar a resolver?
Citação:using (DataTable Dt_Lista = N_Funcionarios.LerTodosFuncionarios(size))
{
DgvDados.Rows.Clear();
// DgvDados.Columns.Clear();
if (DgvDados.Columns.Count == 0)
{
foreach (DataColumn Col in Dt_Lista.Columns)
{
DgvDados.Columns.Add(Col.ColumnName, Col.ColumnName);
if (BolPararLoopLeituraFunc == true)
{
break;
}
}
}
FormatarDatagrid();
if (Dt_Lista.Rows.Count > 0)
{
foreach (DataRow row in Dt_Lista.Rows)
{
DgvDados.Rows.Add(row.ItemArray);
MostrarMensagemLabel();
if (BolPararLoopLeituraFunc == true)
{
break;
}
}
}
MostrarMensagemLabel();
}
alguém que possa dar uma ideia para poder resolver ?
Em vez de usar o foreach, teste com o for (int i=0; i<Dt_Lista.Rows.Count; i++) e veja se corrige o seu problema.
Citação::
O que voce quer dizer por "organizar campo"?
Em vez de usar o foreach, teste com o for (int i=0; i<Dt_Lista.Rows.Count; i++) e veja se corrige o seu problema.
Jaba,
estou chamando a ele em forma Ascending, nessa coluna
mas o problema não é os dados, o problema aparece quando faço um click no titulo da coluna se essa cells está vazia ele dispara esse erro
System.ArgumentException: "Object must be of type String."
fora disso ele traz todos os dados normal
não consigo debug porque o erro não é de dados.
O ADO.NET não trata valores nulos no banco como null, ele é convertido para DBNull. Então no meio das suas strings tem alguns DBNull. O que voce deve fazer é fazer o tratamento desses caras e passar para um null ou um string.Empty.
Att,
Citação::
Esse erro deve estar ocorrendo na ordenação porque voce deve estar inserindo tipos de dados diferentes para algumas colunas desse DataGrid. Por exemplo, se o primeiro registro da coluna é String, o restante será tratado como String automaticamente. Desta forma, se os tipos de dados dos próximos registros dessa coluna mudar, vai gerar essa exceção. E é exatamente isso que acontece contigo! Veja que na coluna do CPF o primeiro registro está vazio e o restante é preenchido com números. Bingo!!! O grid estava esperando outras Strings na sequencia, só que o seu tipo de dados mudou, daàé disparada uma exceção. Basta, então, só colocar um zero nessa coluna com dado vazio que o problema será corrigido. Após essa correção, veja se o mesmo acontece nas outras colunas.
Meu grande, o problema persiste
Citação::
Acredito que o motivo é que voce está passando os valores do RowData diretamente para o seu grid.
O ADO.NET não trata valores nulos no banco como null, ele é convertido para DBNull. Então no meio das suas strings tem alguns DBNull. O que voce deve fazer é fazer o tratamento desses caras e passar para um null ou um string.Empty.
Att,
deu certo, converti em string e não está mais apresentando esse erro, eu pensei que ele convertia diretamente em string porque ao final estava declarando que estpero um string,
agora deu certo.