[VB 2008] Formattazione colonne Datagridview

martedì 22 luglio 2008 - 16.14

ilgrongo Profilo | Newbie

Salve

E' il mio primo post ne approfitto per salutare e ringraziare anticipatamente tutti.
Vengo dalla programmazione tradizionale (Clipper, Pascal, basic, ecc) e solo da poco tempo mi sono avvicinato alla programmazione ad oggetti, in particolare
utilizzando VisualFoxPro. Con tale linguaggio ho scritto un'applicazione che volevo tradurre in VB.NET
Ho un problema con una datagridview .
In particolare, cercando di formattare la larghezza delle colonne della mia griglia mi becco l'errore
Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index"
che mi sembra logico in quanto non specifico manualmente il numero di colonne, ma attraverso un odbcCommand
Qualcuno mi spiega come posso fare ?
Inoltre volevo chiede, come è possibile elimare la riga vuota che esce dopo l'ultimo record della mia datagridview che solitamente ha un asterisco sulla sinistra ?

Faccio presente che sono oltremodo nubbio.....abbiate bontà

Grazie


Imports System.Data.OleDb

Public Class FormDettaglioCliente

Dim cn As New Odbc.OdbcConnection("Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=beautypassion; User=root;Password=antonio;")
Dim cmd As Odbc.OdbcCommand
Dim adp As Odbc.OdbcDataAdapter
Dim ds As New DataSet

Private Sub FormDettaglioCliente_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim columnHeaderStyle As New DataGridViewCellStyle()
columnHeaderStyle.Font = New Font("Tahoma", 10, FontStyle.Bold)
DataGridView55.ColumnHeadersDefaultCellStyle = columnHeaderStyle

cn.Open()
cmd = New Odbc.OdbcCommand("Select clcodcli as Codice, clcognome as Cognome, clnome as Nome from clienti", cn)
adp = New Odbc.OdbcDataAdapter(cmd)
adp.Fill(ds, "clienti")
Me.DataGridView55.DataSource = ds
Me.DataGridView55.Columns(0).Width = 30 ('qua mi becco Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index")
Me.DataGridView55.Columns(1).Width = 100
Me.DataGridView55.Columns(2).Width = 100
Me.DataGridView55.DataMember = "clienti"


cn.Close()


End Sub

paoval72 Profilo | Senior Member

Ciao, così a prima vista mi semba che manchi il DataBind(), che associa il dataset alla griglia: la colonna (0) risulta così inesistente. Perciò anche l'indice che gli passi è inesistente. Se invece lo fai 8e mi è sfuggito) controlla che il dataset restituito abbia almeno un record: altrimenti la griglia risulterà del tutto vuota.

PV



ilgrongo Profilo | Newbie

Il databind cìè tanto è vero che la griglia con i dati viene caricata correttamente
Il mio è solo un problema legato alla formattazione delle colonne.

Mi chiedevo se ci fosse (sicuramente c'è) un metodo alternativo al

Me.DataGridView55.Columns(0).Width

dove invece dell'indice viene passata un riferimento alla colonna della tabella utilizzata del dataset

RISOLTO !!!
E' bastato spostare i settaggi delle colonne dopo l'assegnazione del datamember
Chiedo scusa ma non ho capito come mettere l'indicazione di problema risolto

Me.DataGridView55.DataSource = ds
Me.DataGridView55.DataMember = "clienti"
Me.DataGridView55.Columns(0).Width = 30 ('qua mi becco Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index")
Me.DataGridView55.Columns(1).Width = 100
Me.DataGridView55.Columns(2).Width = 100

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5