DropDownList e dataset

venerdì 08 aprile 2005 - 23.14

mgianluca Profilo | Junior Member

Ciao ragazzi.

Ho una web form dove ho inserito una dropdownlist.

Non riesco a capire come mai non riesco da codice a collegare l'oggetto in questione con un dataset

sql = "SELECT codice, descrizion FROM pagament"
cmd.SelectCommand = New OleDbCommand(sql, conn)
cmd.Fill(ds, "pagamenti")
ddlPag.DataSource = ds("pagamenti")
ddlPag.DataBind()

ma sono costretto a farlo in questo modo

Dim r As DataRow
For Each r In ds.Tables("pagamenti").Rows
ddlPag.Items.Add(r("descrizion"))
Next

come mai?
-----------------------------------------------
In più quando seleziono un elemento dalla lista (la descrizione) dovrei prendermi il codice per poi fare il filtro in un dataview. Purtroppo sono costretto a farlo in questo modo:

Dim r As DataRow
Dim str As String
For Each r In ds.Tables("pagamenti").Select("descrizion = '" & ddlPag.SelectedItem.Text & "'")
str &= r("codice")
Next

C'è un altro modo più semplice e pulito?

Grazie anticipatamento per l'aiuto

totti240282 Profilo | Guru

scusa ma tu fai il fill con una command ???

cmd.Fill(ds, "pagamenti")


dovresti usare un adapter ,strano che non ti dia errore !!??.

freeteo Profilo | Guru

ciao,
alla dropdown devi impostare anche il datamember con il nome della colonna "descrizione" in modo che sappia che campo visualizzare come lista di oggetti:

drop.datasource = miatabella;
drop.datamember = macolonna;
drop.databind();

ps:concordo,il metodo fill sara' del datadapter non del command,sara' 1 errore di trascrizione...
ciao

mgianluca Profilo | Junior Member

sucsa ma miatabella e miacolonna sempre di un dataset?

visto che è un dato che non devo modificare ma solo prendere per una futura condizione posso usare il datareader e in che modo in questo caso?

Brainkiller Profilo | Guru

Certo gianluca,
per velocizzare:

Dim da as SqlDataAdapter
da=new SqlDataAdapter("select colonna1,colonna2 from tabella",conn)

Dim ds as new DataSet
da.Fill(ds)

drop.DataSource = ds
drop.DataMember = "colonna1"
drop.DataBind()

ciao
david

mgianluca Profilo | Junior Member

Si, ora sono riuscito anche se ho preferito come datasource non un dataset ma un datareader.

Ora però mi trovo un piccolo pbl.

Caricando direttamente i dati non mi trovo la possibilità di non effettuare il filtro. In pratica non ho la scelta ""

Cosa mi consigli di fare?

micto27 Profilo | Senior Member

Credo che la cosa più comoda sia di valorizzare, prima della chiamata al metodo DataBind, le proprietà DataTextField e DataValueField del controllo DropDownList. Con tali proprietà comunichi quali colonne del DataSource vanno associate al Text (valore visibile) e al Value (es. codice associato al valore visibile) del DropDownList:

ddlPag.DataSource = ds("pagamenti")
--> ddlPag.DataTextField = "Descrizione"
--> ddlPag.DataValueField = "Codice"
ddlPag.DataBind()

ciao, Michele.
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5