C#/ASP.NET DropDown Bindung mit mehreren Werten in der Anzeige

SG_wXistenZ

Mitglied
Hi,

bei dem Versuch Daten an eine DropDownList zu binden, stosse ich an meine Grenzen.
Vielleicht weiß hier jemand einen Tip:

Ich möchte dem folgenden Code beibringen, das mehrere Felder der Tabelle im Drop-Down gezeigt werden, aber nur die Bestellnummer als Wert gespeichert wird.

Code:
this.BESTauswahlLST.DataSource = ds.Tables[0];
this.BESTauswahlLST.DataTextField = "BestNr, BestDat, LiefDat, BestName";
this.BESTauswahlLST.DataValueField = "BestNr";
this.BESTauswahlLST.DataBind();
this.BESTauswahlLST.SelectedIndex = -1;
Dieser Code ist natürlich fehlerhaft...

Für Hilfe wäre ich dankbar.

Salü,
eXi
 
Hi,

mein Wissen bezieht sich zwar nicht auf die Webkomponeten aber wenn du sowas in WindowsForms machen willst mußt du schon die Combobox mit einem Objekt füllen.

Code:
lstPakete.DataTextField = "txt";
lstPakete.DataValueField = "Id";
ArrayList pLst = editpakete.fillPLst();
for ( int i = 0; i < pLst.Count; i++ )
			{
				comboBox1.Items.Add(paketeLst[i]);
			}

In der ArrayList packt du einfach die Objekte. Diese enthalten die Eigenschaften txt und id. Bei txt kannst du einfach mehere z.B. Stings zusammenpacken.
 
Nicht schlecht...

ich hatte es zwar shon mit einer HashTable gelöst, aber Deine Version ist eleganter (Geht aber bei WebForms nicht).

Code:
Hashtable ht = new Hashtable();
string strSQL = "";
strSQL += "SELECT ";
strSQL += "Bestellungen.[Bestell-Nr] AS BestNr, ";
strSQL += "Bestellungen.[Kunden-Code] AS Kcode, ";
strSQL += "Format(bestellungen.Bestelldatum, 'dd.mm.yy') AS BestDat, ";
strSQL += "Versandfirmen.Firma AS VersFirma, ";
strSQL += "Bestellungen.Frachtkosten AS FrachtKosten ";
strSQL += "FROM Bestellungen, Versandfirmen ";
strSQL += "WHERE Bestellungen.VersandÜber = Versandfirmen.[Firmen-Nr] ";
strSQL += "AND Bestellungen.[Kunden-Code] = '" + KDid + "'";
OleDbCommand cmd = new OleDbCommand(strSQL, this.DBcon);
this.DBcon.Open();
OleDbDataReader dr = cmd.ExecuteReader();
while( dr.Read() )
{
int tmpBestNr = Convert.ToInt32( dr["BestNr"].ToString( ) );
string TmpString = "";
TmpString += "B" + dr["BestDat"].ToString( ) + " - ";
TmpString += dr["VersFirma"].ToString( ) + " - ";
TmpString += dr["FrachtKosten"].ToString( ) + " - ";
ht.Add(tmpBestNr, TmpString); 
}
this.BESTauswahlLST.DataSource = ht;
this.BESTauswahlLST.DataTextField = "value";
this.BESTauswahlLST.DataValueField = "Key";
this.DataBind();



Deemax hat gesagt.:
Hi,

mein Wissen bezieht sich zwar nicht auf die Webkomponeten aber wenn du sowas in WindowsForms machen willst mußt du schon die Combobox mit einem Objekt füllen.

Code:
lstPakete.DataTextField = "txt";
lstPakete.DataValueField = "Id";
ArrayList pLst = editpakete.fillPLst();
for ( int i = 0; i < pLst.Count; i++ )
			{
				comboBox1.Items.Add(paketeLst[i]);
			}

In der ArrayList packt du einfach die Objekte. Diese enthalten die Eigenschaften txt und id. Bei txt kannst du einfach mehere z.B. Stings zusammenpacken.
 

Neue Beiträge

Zurück