GRIDVIEW - PEGAR NOME DO HEADER
Pessoal,
alguem sabe como pegar o nome do header de um gridview via code-behind?
alguem sabe como pegar o nome do header de um gridview via code-behind?
ja tentou GridView01.Columns[0].HeaderText ??
onde:
GridView01: Nome da sua GridView
Columns[0]: Index da Coluna
Abraços
onde:
GridView01: Nome da sua GridView
Columns[0]: Index da Coluna
Abraços
Não resolveu....
aparece a seguinte mensagem de erro:
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
abs
aparece a seguinte mensagem de erro:
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
abs
Bom, se vc quer clicar na coluna e pegar o texto do nome da mesma:
[txt-color=#0000f0] Private Sub DataGridView1_ColumnHeaderMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.ColumnHeaderMouseClick
msgbox ( [Ô]Texto da Coluna: [Ô] + DataGridView1.Columns(e.ColumnIndex).HeaderText)
msgbox ( [Ô]Nome da Coluna: [Ô] + DataGridView1.Columns(e.ColumnIndex).Name.ToString)
End Sub[/txt-color]
[txt-color=#0000f0] Private Sub DataGridView1_ColumnHeaderMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.ColumnHeaderMouseClick
msgbox ( [Ô]Texto da Coluna: [Ô] + DataGridView1.Columns(e.ColumnIndex).HeaderText)
msgbox ( [Ô]Nome da Coluna: [Ô] + DataGridView1.Columns(e.ColumnIndex).Name.ToString)
End Sub[/txt-color]
nao, nao....
o que quero e, que, quando fosse montado o grid, ele ja pegasse o nome da header (gridview).
Preciso que seja pego o nome da header sem precisar clicar em algo.
o que quero e, que, quando fosse montado o grid, ele ja pegasse o nome da header (gridview).
Preciso que seja pego o nome da header sem precisar clicar em algo.
Consegui resolver de outra maneira.
ao gerar um datatable, eu pego o numero de colunas que preciso e crio um array e depois armazeno o nome da coluna:
aMeses(contador) = dttable.Columns(num_coluna).ColumnName
apos isso eu abro uma session e armazeno o array nela, para usar no rowdatabound do gridview.
montei um procedimento, onde pego o array que esta na session e atraves de um for pelas colunas eu monto o meu header, enquando renomeio as coluas (tambem com um for).
Private Sub monta_header(ByVal ncolunas As Integer, ByVal colInicio As Int32, ByVal totcolunas As Integer)
Dim HeaderGrid As GridView = DirectCast(nome_do_grid, GridView)
Dim HeaderGridRow As New GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert)
Dim aMeses() As String = CType(Session([Ô]Meses[Ô]), Array)
Dim HeaderCell As New TableCell()
HeaderCell.Text = [Ô]Texto da nova header[Ô]
HeaderCell.ColumnSpan = 27
HeaderGridRow.Cells.Add(HeaderCell)
HeaderCell.HorizontalAlign = HorizontalAlign.Center
For iCont = 1 To ncolunas
HeaderCell = New TableCell()
HeaderCell.Text = aMeses(iCont - 1)
HeaderCell.ColumnSpan = 3
HeaderCell.ForeColor = Drawing.Color.Black
HeaderCell.HorizontalAlign = HorizontalAlign.Center
HeaderGridRow.Cells.Add(HeaderCell)
HeaderCell.BackColor = IIf(iCont Mod 2 = 0, Drawing.Color.Silver, Drawing.Color.LightSkyBlue)
Next
grdDCD.Controls(0).Controls.AddAt(0, HeaderGridRow)
End Sub
rotina que vai no rowdatabound do gridview:
If e.Row.RowType.ToString().Equals([Ô]Header[Ô]) Then
For contii = 27 To iTotColumns - 1 Step 3
With e.Row.Cells(contii)
.Text = [Ô]Texto da coluna 1 alterado[Ô] [ô]Renomeia a coluna
.BackColor = IIf(iCont Mod 2 = 0, Drawing.Color.Silver, Drawing.Color.LightSkyBlue) [ô] Cor de fundo
.ForeColor = Drawing.Color.Black [ô]Cor do texto
End With
With e.Row.Cells(contii + 1)
.Text = [Ô]Texto da coluna 2 alterado[Ô]
.BackColor = IIf(iCont Mod 2 = 0, Drawing.Color.Silver, Drawing.Color.LightSkyBlue)
.ForeColor = Drawing.Color.Black
End With
With e.Row.Cells(contii + 2)
.Text = [Ô]Texto da coluna 3 alterado[Ô]
.BackColor = IIf(iCont Mod 2 = 0, Drawing.Color.Silver, Drawing.Color.LightSkyBlue)
.ForeColor = Drawing.Color.Black
End With
iCont = iCont + 1
Next
Neste caso eu preciso sempre renomear tres colunas com o mesmo texto, para fazer com uma so presica somente remover o step 3 e deixar apenas um bloco de with ... end with.
bom, nao consegui ainda pegar o nome da coluna diretamente o gridview, mas consegui uma alternativa. Tai, caso alguem se encontre em uma situacao parecida com a minha.
ao gerar um datatable, eu pego o numero de colunas que preciso e crio um array e depois armazeno o nome da coluna:
aMeses(contador) = dttable.Columns(num_coluna).ColumnName
apos isso eu abro uma session e armazeno o array nela, para usar no rowdatabound do gridview.
montei um procedimento, onde pego o array que esta na session e atraves de um for pelas colunas eu monto o meu header, enquando renomeio as coluas (tambem com um for).
Private Sub monta_header(ByVal ncolunas As Integer, ByVal colInicio As Int32, ByVal totcolunas As Integer)
Dim HeaderGrid As GridView = DirectCast(nome_do_grid, GridView)
Dim HeaderGridRow As New GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert)
Dim aMeses() As String = CType(Session([Ô]Meses[Ô]), Array)
Dim HeaderCell As New TableCell()
HeaderCell.Text = [Ô]Texto da nova header[Ô]
HeaderCell.ColumnSpan = 27
HeaderGridRow.Cells.Add(HeaderCell)
HeaderCell.HorizontalAlign = HorizontalAlign.Center
For iCont = 1 To ncolunas
HeaderCell = New TableCell()
HeaderCell.Text = aMeses(iCont - 1)
HeaderCell.ColumnSpan = 3
HeaderCell.ForeColor = Drawing.Color.Black
HeaderCell.HorizontalAlign = HorizontalAlign.Center
HeaderGridRow.Cells.Add(HeaderCell)
HeaderCell.BackColor = IIf(iCont Mod 2 = 0, Drawing.Color.Silver, Drawing.Color.LightSkyBlue)
Next
grdDCD.Controls(0).Controls.AddAt(0, HeaderGridRow)
End Sub
rotina que vai no rowdatabound do gridview:
If e.Row.RowType.ToString().Equals([Ô]Header[Ô]) Then
For contii = 27 To iTotColumns - 1 Step 3
With e.Row.Cells(contii)
.Text = [Ô]Texto da coluna 1 alterado[Ô] [ô]Renomeia a coluna
.BackColor = IIf(iCont Mod 2 = 0, Drawing.Color.Silver, Drawing.Color.LightSkyBlue) [ô] Cor de fundo
.ForeColor = Drawing.Color.Black [ô]Cor do texto
End With
With e.Row.Cells(contii + 1)
.Text = [Ô]Texto da coluna 2 alterado[Ô]
.BackColor = IIf(iCont Mod 2 = 0, Drawing.Color.Silver, Drawing.Color.LightSkyBlue)
.ForeColor = Drawing.Color.Black
End With
With e.Row.Cells(contii + 2)
.Text = [Ô]Texto da coluna 3 alterado[Ô]
.BackColor = IIf(iCont Mod 2 = 0, Drawing.Color.Silver, Drawing.Color.LightSkyBlue)
.ForeColor = Drawing.Color.Black
End With
iCont = iCont + 1
Next
Neste caso eu preciso sempre renomear tres colunas com o mesmo texto, para fazer com uma so presica somente remover o step 3 e deixar apenas um bloco de with ... end with.
bom, nao consegui ainda pegar o nome da coluna diretamente o gridview, mas consegui uma alternativa. Tai, caso alguem se encontre em uma situacao parecida com a minha.
Tópico encerrado , respostas não são mais permitidas