Passare dati al GridView

giovedì 04 settembre 2008 - 18.55

Gemini Profilo | Expert

Ciao a tutti,
devo passare dei dati ad un GridView.
Per far questo mi sono creato una classe che indica il tipo di dati che voglio passare:

namespace CMS.Classi
{
public class clsTipoUtente
{
public string id_utente;
public string nome;
public string cognome;

public clsTipoUtente()
{
id_utente = string.Empty;
nome = string.Empty;
cognome = string.Empty;
}
}
}

poi dichiaro un vettore di questo tipo di dati:
private clsTipoUtente[] lstUtenti;

carico i dati
cUtente.ListaUtenti(lstUtenti);

e passo i dati al GridView
gvUtenti.DataSource = lstUtenti;
gvUtenti.DataBind();

il GridView è dichiarato in questo modo:
<asp:GridView ID="gvUtenti" runat="server" AllowPaging="True" AutoGenerateColumns="False" AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" EnableSortingAndPagingCallbacks="True" AllowSorting=true onse="GridView1_SelectedIndexChanged">
<Columns>
<asp:BoundField HeaderText="Nome" DataField="nome" SortExpression="nome"></asp:BoundField>
<asp:BoundField HeaderText="Cognome" DataField="cognome" SortExpression="cognome"></asp:BoundField>
</Columns>
</asp:GridView>

Il problema è che non trova i capi nome e cognome.
Di sicuro sbaglio nel richiamare i dati.

Dove sbaglio?

Grazie mille

Anonimo Profilo | Senior Member

Prova a vedere tutto in modo lievemente diverso:

public class clsUtenti { public struct udtUtente { public string nome; public string cognome; ... public udtUtente(string n, string c, ...) { nome=""; cognome=""; ... } public static DataTable getSchema() { DataTable result = new DataTable("LISTA_UTENTI"); result.Columns.Add(new DataColumn("nome")); result.Columns.Add(new DataColumn("cognome")); ... return result; } } private ArrayList collUtenti; public clsUtente() { collUtenti = new ArrayList(); } public bool Add(udtUtente utente) { try { collUtenti.Add(utente); return true; } catch { return false; } } public bool Remove(udtUtente utente) { try { collUtenti.Remove(utente); return true; } catch { return false; } } public udtUtente Item(int index) { string errMsg = "Il parametro deve essere compreso tra 0 e " + collUtenti.Lenght; if (index<0 || index>=collUtenti.Lenght) throw new ArgumentException(errMsg); try { return (udtUtente)collUtenti[index]; } catch { return null; } } public int Count { get { return collUtenti.Lenght; } } public DataTable getAllUtenti() { DataTable result = udtUtente.getSchema(); for(int i=0; i<collUtenti.Leght; i++) { DataRow dr = result.newRow(); dr["nome"]=((udtUtente)collUtenti[i]).nome; dr["cognome"]=((udtUtente)collUtenti[i]).cognome; ... result.Rows.Add(dr); } result.AcceptChanges(); return result; } }

Fatta la classe nel codice per fare il bind lasci tutto invariato ma al posto che passare l'array nel datasource ci passi la riga di codice:

griglia.DataSource = istanzaClasseUtenti.getAllUtenti(); griglia.DataBind();

e come per magia funziona tutto.

Team Icon - Software Engineering
------------------------------
Unicredit Global Information Services Spa
Chief Solution Architect
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5