ROWHEADER NAO MOSTRA VALOR ATRIBUIDO
Boas minha gente
Tenho uma aplicação que no Evento New() tem o seguinte codigo:
dsFutebol.Tables.Add([Ô]JOGOS[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]ID[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]EPOCA[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]COMPETICAO[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]DATA[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]FASE[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]DETALHE[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]JORNADA[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]VISITADO[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]VISITANTE[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]RESULTADO[Ô])
dgJOGOS.DataSource = dsFutebol.Tables([Ô]JOGOS[Ô])
Depois num segundo evento tenho:
....
...... código que preenche a tabela Jogos do Dataset Futebol com vários registros
....
....
Até aqui tudo bem. O problema vem a seguir. Ainda neste segundo evento tenho o seguinte código:
Dim I As Integer
For I = 0 To dsFutebol.Tables([Ô]JOGOS[Ô]).Rows.Count - 1
dgJOGOS.Rows(I).HeaderCell.Value = dsFutebol.Tables([Ô]JOGOS[Ô]).Rows(I).Item(0).ToString
Next
Então, o problema é que os dados não ficam visÃveis à primeira. Mas se correr uma segunda e terceira vez este segundo evento, ai os dados ficam visÃveis.
Mas eu preciso que os dados fiquem visÃveis logo à primeira!
Basicamente este código é para colocar o ID da tabela Jogos no RowHeader. Mas à primeira e não só depois de executar o evento a segunda vez.
Obrigado pela ajuda
Tenho uma aplicação que no Evento New() tem o seguinte codigo:
dsFutebol.Tables.Add([Ô]JOGOS[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]ID[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]EPOCA[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]COMPETICAO[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]DATA[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]FASE[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]DETALHE[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]JORNADA[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]VISITADO[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]VISITANTE[Ô])
dsFutebol.Tables([Ô]JOGOS[Ô]).Columns.Add([Ô]RESULTADO[Ô])
dgJOGOS.DataSource = dsFutebol.Tables([Ô]JOGOS[Ô])
Depois num segundo evento tenho:
....
...... código que preenche a tabela Jogos do Dataset Futebol com vários registros
....
....
Até aqui tudo bem. O problema vem a seguir. Ainda neste segundo evento tenho o seguinte código:
Dim I As Integer
For I = 0 To dsFutebol.Tables([Ô]JOGOS[Ô]).Rows.Count - 1
dgJOGOS.Rows(I).HeaderCell.Value = dsFutebol.Tables([Ô]JOGOS[Ô]).Rows(I).Item(0).ToString
Next
Então, o problema é que os dados não ficam visÃveis à primeira. Mas se correr uma segunda e terceira vez este segundo evento, ai os dados ficam visÃveis.
Mas eu preciso que os dados fiquem visÃveis logo à primeira!
Basicamente este código é para colocar o ID da tabela Jogos no RowHeader. Mas à primeira e não só depois de executar o evento a segunda vez.
Obrigado pela ajuda
Tente passar o depurador e ver quais são os eventos que estão sendo executados em sua aplicação, além disso, veja se a ordem dos eventos está influenciando a mudança dos dados
vlw
vlw
Obrigado pelo comentário!
Onde está
Dim I As Integer
For I = 0 To dsFutebol.Tables([Ô]JOGOS[Ô]).Rows.Count - 1
dgJOGOS.Rows(I).HeaderCell.Value = dsFutebol.Tables([Ô]JOGOS[Ô]).Rows(I).Item(0).ToString
Next
São as ultimas linha de código do evento e não estão a disparar nenhum outro evento. Se eu fizer break no [Ô]Next[Ô] e analisar qual o valor do .HeaderCell.Value ele é realmente igual ao valor de dsFutebol.Tables([Ô]JOGOS[Ô]).Rows(I).Item(0).ToString.
Ou seja o valor está a ser atribuido, no entanto por algum motivo não está a ser mostrado a quando da primeira execução.
Já dei voltas ao código que até é bem pequeno e não vejo nenhuma inconsistência.
Por isso vim aqui ver se alguém me podia ajudar porque realmente não consigo dar volta nisto.
Mais uma vez obrigado!
Onde está
Dim I As Integer
For I = 0 To dsFutebol.Tables([Ô]JOGOS[Ô]).Rows.Count - 1
dgJOGOS.Rows(I).HeaderCell.Value = dsFutebol.Tables([Ô]JOGOS[Ô]).Rows(I).Item(0).ToString
Next
São as ultimas linha de código do evento e não estão a disparar nenhum outro evento. Se eu fizer break no [Ô]Next[Ô] e analisar qual o valor do .HeaderCell.Value ele é realmente igual ao valor de dsFutebol.Tables([Ô]JOGOS[Ô]).Rows(I).Item(0).ToString.
Ou seja o valor está a ser atribuido, no entanto por algum motivo não está a ser mostrado a quando da primeira execução.
Já dei voltas ao código que até é bem pequeno e não vejo nenhuma inconsistência.
Por isso vim aqui ver se alguém me podia ajudar porque realmente não consigo dar volta nisto.
Mais uma vez obrigado!
Isso está em um Form? Se sim já tentou colocar no evento Load do form isso?
O New é o construtor, ele é a primeira coisa que executa quando a classe é instanciada, e pode ser que seja muito cedo para você modificar certas coisas nos componentes do form ai, já o eveto Load acontece depois dos componentes terem sido iniciados.
O New é o construtor, ele é a primeira coisa que executa quando a classe é instanciada, e pode ser que seja muito cedo para você modificar certas coisas nos componentes do form ai, já o eveto Load acontece depois dos componentes terem sido iniciados.
OCELOTE excelente dica!
Agora já mostra na primeira vez que o evento é chamado.
Ainda assim vou ter de analisar o porquê, dado que não era no evento New() que o código que atribuÃa o valor do dataset ao valor do datagrid.
No evento New() apenas estava a criar o dataset, a tabela jogos e as colunas dessa mesma tabela. Além disso as outras colunas estavam a mostrar tudo normal só os HeaderRows é que não mostravam o valor associado.
Bom mas para já está a funcionar na perfeição, então muito obrigado!
Agora já mostra na primeira vez que o evento é chamado.
Ainda assim vou ter de analisar o porquê, dado que não era no evento New() que o código que atribuÃa o valor do dataset ao valor do datagrid.
No evento New() apenas estava a criar o dataset, a tabela jogos e as colunas dessa mesma tabela. Além disso as outras colunas estavam a mostrar tudo normal só os HeaderRows é que não mostravam o valor associado.
Bom mas para já está a funcionar na perfeição, então muito obrigado!
Como estava no New provavelmente você modificava o valor dos headers antes do controle ter iniciado completamente, então na hora que ele terminava de iniciar o valor padrão substituÃa o que você colocou por código, já os dados das outras linhas como não tinham um valor padrão para ele iniciar ficavam o que você colocou por código mesmo.
Faça seu login para responder