PDA

Visualizza la versione completa : [C#] popolamento dropdownlist da codebehind


LorenaRm82
13-04-2015, 14:57
Ciao a tutti,
vorrei popolare una dropdownlist con i dati di una tabella tipologica (id e nome prodotto) salvata in un datatable..

scrivo:



string source = stringa di connessione;

string select = "Select * from Tabella";
OleDbConnection conn = newOleDbConnection(source);
conn.Open();
OleDbCommand comm = newOleDbCommand(select, conn);
comm.CommandType = CommandType.Text;

OleDbDataAdapter da = newOleDbDataAdapter(comm);

DataSet ds = newDataSet();

da.Fill(ds, "Tabella");

DataTable dt = ds.Tables["Tabella"];


ora se aggiungo questa riga

dropdownlist.DataSource = dt;

non visualizzo nessun record

se invece scrivo
dropdownlist.DataSource = dt.Rows[0][1].ToString();

visualizzo solo l'id specificato

come posso far mostrare tutti i dati?
grazie

djciko
16-04-2015, 13:19
mi sa che devi dirgli quali sono i campi DataTextField e DataValueField. (E mi sa anche DataMember ["Tabella"])
E fare poi il Databind().


un altro modo, con gli items costruiti uno per uno, un esempio c#


Public Shared Sub DropDownFill_SP(ByVal dropdown As System.Web.UI.WebControls.DropDownList, ByVal nomestored As String, ByVal parametri As System.Data.SqlClient.SqlParameter(), ByVal nomecampotext As String, ByVal nomecampovalue As String)
Dim db As New Database.SqlTools
Dim dtable As New DataTable
Try
dtable = db.EseguiStoredConParametri_Datatable(nomestored, parametri)


' Aggiungo gli items
Dim indicielementi As Integer = 0
For Each riga As DataRow In dtable.Rows
Dim itemdrop As New ListItem
If Not IsDBNull(riga(nomecampotext)) Then
itemdrop.Text = riga(nomecampotext)
End If
If Not IsDBNull(riga(nomecampovalue)) Then
itemdrop.Value = riga(nomecampovalue)
End If
dropdown.Items.Insert(indicielementi, itemdrop)
indicielementi += 1
Next
Catch ex As Exception
Throw ex
End Try
End Sub



Database.SqlTools era una mia classe

LorenaRm82
23-04-2015, 15:47
ok grazie,
mi puoi però postare il codice per il primo modo? perché non mi è molto chiaro

djciko
23-04-2015, 17:37
dropdownlist.DataTextField = "campotext_della_tabella"
dropdownlist.DataValueField = "campovalue_della_tabella"
dropdownlist.DataSource = dt
dropdownlist.DataBind()

LorenaRm82
24-04-2015, 12:12
ok ..
adesso voglio inserire il valore della dropdownlist nel database
ho scritto:



string descrizione = dropdownlist.SelectedItem.Text;
string insert = "INSERT INTO [Tabella] ([Descrizione]) VALUES ('" + descrizione + "')";


ma mi da errore sulla prima riga, mi dice Riferimento a un oggetto non impostato su un'istanza di oggetto

djciko
24-04-2015, 12:42
non saprei, hai provato con il debug ed hai selezionato il 3° elemento per esempio ?

ps: stai attenta al postback !

LorenaRm82
24-04-2015, 13:00
no, come si fa?

djciko
24-04-2015, 15:37
il debug in visual studio...
ed un elemento selezionato della drop

LorenaRm82
27-04-2015, 13:22
ok
volendo inserire nel db un valore ID presente in una text box?



int id= Convert.ToInt32(textbox.Text);

string insert = "INSERT INTO [Tabella] " +

"([ID]) " +

"VALUES " +

"('" + id + "')" ;




mi torna errore: Formato stringa di input non corretto

djciko
27-04-2015, 13:59
stai tentanto di incollare un Int32 ("id") ad una stringa....("insert").

anche se tutto il modo e' sbagliato (compreso il fatto che l'ID dovrebbe essere il .value, non il .text), converti "id" in stringa.

ma sai cosa e' il debug ?

Loading