Passare un array di classi ad un DataSource

lunedì 24 settembre 2007 - 11.55

Gemini Profilo | Expert

Ciao a tutti,
devo passare alla proprietà DataSource di un dropdownlist un array di classi.

Ho fatto così:
clsTipoCliente[] lstClienti = new clsTipoCliente[n_clienti];
...
ddlClienti.DataSource = lstClienti;
ddlClienti.DataValueField = "codice_cliente";
ddlClienti.DataTextField = "nome";
ddlClienti.DataBind();

dove:
using System;

namespace Classi
{
public class clsTipoCliente
{
public string codice_cliente;
public string codice_user;
public string email;
public string nome;
public string azienda;
public string indirizzo_sl;
public string citta_sl;
public string prov_sl;
public string cap_sl;
public string stato_sl;
public string indirizzo_so;
public string citta_so;
public string prov_so;
public string cap_so;
public string stato_so;
public string partita_iva;
public string codice_fiscale;
public string rappr_legale;
public string username;
public string password;

public clsTipoCliente()
{
codice_cliente = string.Empty;
codice_user = string.Empty;
email = string.Empty;
nome = string.Empty;
azienda = string.Empty;
indirizzo_sl = string.Empty;
citta_sl = string.Empty;
prov_sl = string.Empty;
cap_sl = string.Empty;
stato_sl = string.Empty;
indirizzo_so = string.Empty;
citta_so = string.Empty;
prov_so = string.Empty;
cap_so = string.Empty;
stato_so = string.Empty;
partita_iva = string.Empty;
codice_fiscale = string.Empty;
rappr_legale = string.Empty;
username = string.Empty;
password = string.Empty;
}
}
}

Quando eseguo il codice ho questo errore:

DataBinder.Eval: 'Classi.clsTipoCliente' non contiene una proprietà con nome codice_cliente.
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.

Dettagli eccezione: System.Web.HttpException: DataBinder.Eval: 'Classi.clsTipoCliente' non contiene una proprietà con nome codice_cliente.

Errore nel codice sorgente:


Riga 57: ddlClienti.DataValueField = "codice_cliente";
Riga 58: ddlClienti.DataTextField = "nome";
Riga 59: ddlClienti.DataBind();
Riga 60: }
Riga 61: }

Perchè?
Grazie mille

carafe Profilo | Newbie

Prova ad assegnare il datasource in questo modo
ddlClienti.DataSource = lstClienti.toArray();
Ciao
Nessuno siamo perfetti, ognuno ci abbiamo i suoi difetti.

Gemini Profilo | Expert

Ciao, se provo con toArray mi da errore.
Non ha nessun definizione per toArray.

carafe Profilo | Newbie

ciao, prova ad usare un arraylist dove ogni elemento è rappresentato dalla tua classe e passi l'oggetto arraylist al tuo datasource chiamando il metodo toArray;

poi per ogni campo della tua classe devi creare una proprietà (get,set);
in c# è così:

string _nome;
public string Nome
{
get { return _nome; }
set { _nome = value; }
}


ArrayList lista=new ArrsyList();
lista.add(tuaCLasse);

combo.datasource=lista.toArray();
combo.DataTextField = "Campo da visulizzare";
combo.DataValueField = "Campo valore";

combo.dataBind();

prova cosi e fammi sapere
Ciao
Nessuno siamo perfetti, ognuno ci abbiamo i suoi difetti.
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