20 messaggi dal 02 febbraio 2013
Sto provando a popolare una gridview nel seguente modo:

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Dim Table As Data.DataTable = New Data.DataTable
Table.Columns.Add(New DataColumn("Nome", GetType(String)))
Table.Columns.Add(New DataColumn("Cognome", GetType(String)))
Table.Columns.Add(New DataColumn("Numero", GetType(String)))
Table.Rows.Add(New Object() {"Mario", "Rossi", "1"})
Table.Rows.Add(New Object() {"Manuel", "Rossi", "2"})
Table.Rows.Add(New Object() {"Vito", "Rossi", "3"})
GridView1.DataSource = Table


GridView1.DataBind()


' GridView1.Columns(0).ItemStyle.Width = 100
End Sub

Senza l'ultima riga appena premo il bottone appare la mia tabella perfettamente, ma se abilito l'ultima riga cioè: GridView1.Columns(0).ItemStyle.Width = 100

ricevo questo errore:

Index non compreso nell'intervallo. Richiesto valore non negativo e minore della dimensione della raccolta.

Ho capito dalle varie ricerche che non si aggiorna del tutto il gridview, ma che lo vedo solo visivamente ma non punta a nessuna riga ne colonna.
Cosa può essere?
Ho fatto ore di ricerche senza risolvere....
Qualche aiuto? Sono principiante in materia.
3.939 messaggi dal 28 gennaio 2003
GridView1.Columns.Count => 0 perciò GridView1.Columns(0).ItemStyle.Width = 100 va in errore.

Prova con
CType(GridView1.Controls(0).Controls(0).Controls(0), DataControlFieldHeaderCell).Width = 100


l'html prodotto è:
<th scope="col" style="width:100px;">Nome</th>
20 messaggi dal 02 febbraio 2013
Grazie mille per la risposta, che funziona , ma che non riesco a capire a pieno e che mi lascia tanti dubbi.

Prima di tutto non capisco perchè l'istruziune che dovrebbe assolvere a questo compito mi da quell'errore :
GridView1.Columns(0).ItemStyle.Width = 100

Ho letto delle guide su internet e non capisco perchè non mi funiona, quando invece se faccio :
GridView1.Rows(1).Height = 100

questo mi funziona.


Come se le righe riesce ad individuarle e le colonne no.

Non capisco. qualche spiegazione?
3.939 messaggi dal 28 gennaio 2003
Non sono bravo nelle spiegazioni.
Guarda il codice di sotto, che fa uso della tua istruzione.

Option Strict On
Imports o = MySql.Data.MySqlClient

Partial Class prove_a
    Inherits System.Web.UI.Page


    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Dim Table As Data.DataTable = New Data.DataTable
        Table.Columns.Add(New DataColumn("Nome", GetType(String)))
        Table.Columns.Add(New DataColumn("Cognome", GetType(String)))
        Table.Columns.Add(New DataColumn("Numero", GetType(String)))
        Table.Rows.Add(New Object() {"Mario", "Rossi", "1"})
        Table.Rows.Add(New Object() {"Manuel", "Rossi", "2"})
        Table.Rows.Add(New Object() {"Vito", "Rossi", "3"})


        'proprietà generali del gridview
        With GridView1
            .AutoGenerateColumns = False
            .EnableViewState = False
        End With

        Dim Field As BoundField = Nothing

        Field = New BoundField()
        Field.DataField = "Nome"
        Field.HeaderText = "Nome"
        GridView1.Columns.Add(Field)

        Field = New BoundField()
        Field.DataField = "Cognome"
        Field.HeaderText = "Cognome"
        GridView1.Columns.Add(Field)

        Field = New BoundField()
        Field.DataField = "Numero"
        Field.HeaderText = "Numero"
        GridView1.Columns.Add(Field)

        GridView1.DataSource = Table

        GridView1.DataBind()


        GridView1.Columns(0).ItemStyle.Width = 100



    End Sub


End Class
3.939 messaggi dal 28 gennaio 2003
Altro modo vicino al tuo ma in evento diverso

Option Strict On
Imports o = MySql.Data.MySqlClient

Partial Class prove_a
    Inherits System.Web.UI.Page


    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Dim Table As Data.DataTable = New Data.DataTable
        Table.Columns.Add(New DataColumn("Nome", GetType(String)))
        Table.Columns.Add(New DataColumn("Cognome", GetType(String)))
        Table.Columns.Add(New DataColumn("Numero", GetType(String)))
        Table.Rows.Add(New Object() {"Mario", "Rossi", "1"})
        Table.Rows.Add(New Object() {"Manuel", "Rossi", "2"})
        Table.Rows.Add(New Object() {"Vito", "Rossi", "3"})

        GridView1.DataSource = Table

        GridView1.DataBind()


        'GridView1.Columns(0).ItemStyle.Width = 100

    End Sub


    Protected Sub GridView1_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
        If e.Row.RowType = DataControlRowType.Header Then
            e.Row.Cells(0).Width = 100
        End If
    End Sub
End Class

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.