Estou criando um DataGrid em um form e durante o carregamento da página ((page load), estou preenchendo-o com colunas de modelo criadas dinamicamente por meio de uma stored procedure. Tudo funciona bem e eu consigo o DataGrid. Agora, estou escrevendo um método de atualização que é o tratamento do evento para o clique do botão de atualização. Assim que insiro esse método, o valor de DataGrid1.Items.Count se torna 0 e o DataSet declara uq eo objeto referenciado tem um valor nothing. Por que o DataGrid foi esvaziado no postback?
O controle DataGrid não faz a persistência de colunas adicionadas dinamicamente entre as postagens. Se decidir adicionar colunas instantaneamente, você precisará recriá-las cada vez que a página for recarregada e, em seguida, vinculá-las novamente à fonte de dados.
Estou usando data binding com um DataGrid. Como posso obter o índice de uma linha específica na coleção de linhas do DataTable?
O Microsoft .NET Framework 2.0 tem uma propriedade denominada IndexOf no DataRowCollection que fornece o índice da linha do DataTable, conforme mostrado abaixo:
dt.Rows.IndexOf(row);
A função IndexOf exposta no .NET Framework 2.0 é executada satisfatoriamente mesmo em DataSets muito grandes. No entanto, se estiver usando o .NET Framework 1.x, você precisará recorrer à lógica da força bruta para obter o índice: faça um loop em todas as linhas da coleção de linhas e localize na tabela a linha que coincide com a sua linha.
public int GetIndex(DataRow findRow)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow row = dt.Rows[i];
if (row == findRow)
{
return i;
}
}
return -1;
}
Tenha cuidado para não chamar muitas vezes esta função em seu código, especialmente para DataSets maiores, devido às implicações de desempenho decorrentes do loop em todas as linhas da tabela.
O controle DataGrid não faz a persistência de colunas adicionadas dinamicamente entre as postagens. Se decidir adicionar colunas instantaneamente, você precisará recriá-las cada vez que a página for recarregada e, em seguida, vinculá-las novamente à fonte de dados.
Estou usando data binding com um DataGrid. Como posso obter o índice de uma linha específica na coleção de linhas do DataTable?
O Microsoft .NET Framework 2.0 tem uma propriedade denominada IndexOf no DataRowCollection que fornece o índice da linha do DataTable, conforme mostrado abaixo:
dt.Rows.IndexOf(row);
A função IndexOf exposta no .NET Framework 2.0 é executada satisfatoriamente mesmo em DataSets muito grandes. No entanto, se estiver usando o .NET Framework 1.x, você precisará recorrer à lógica da força bruta para obter o índice: faça um loop em todas as linhas da coleção de linhas e localize na tabela a linha que coincide com a sua linha.
public int GetIndex(DataRow findRow)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow row = dt.Rows[i];
if (row == findRow)
{
return i;
}
}
return -1;
}
Tenha cuidado para não chamar muitas vezes esta função em seu código, especialmente para DataSets maiores, devido às implicações de desempenho decorrentes do loop em todas as linhas da tabela.
0 comentários:
Postar um comentário