Ciao ragazzi,
Ho una drop down in un datalist: riesco apopolare la dropdown, ma non riesco a mostrare come selezionato il valore che attualmeente è settato.
Vi prego ditemi cosa sbaglio che sto impazzendo.
L'errore è questo:
Object reference not set to an instance of an object.
at archivio_det.DtlArchivioBound(Object obj, DataListItemEventArgs e) in D:\website\software\lafer\archivio_det.aspx.vb:lin e 43
Il codebehind adesso è così(è unpò lungo, ma è molto semplice e spero potrete dargli cmq uno sguardo):
quindi nella pagina .aspx ho il datalist così:codice:Imports System.Data Imports System.Data.OleDb Partial Class archivio_det Inherits System.Web.UI.Page Dim MYSQL, MYSQL2 As String Dim conn As Data.OleDb.OleDbConnection Dim MyDA, MyDA2 As Data.OleDb.OleDbDataAdapter Dim MyDS As DataSet Public id_archivio As String Protected MyDs2 As New DataSet Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Carica_Archivio() Carica_Sup() Binda() End Sub Sub DtlArchivioEdit(ByVal obj As Object, ByVal e As DataListCommandEventArgs) DtlArchivio.EditItemIndex = e.Item.ItemIndex DtlArchivio.DataBind() End Sub Sub DtlArchivioAnnulla(ByVal obj As Object, ByVal e As DataListCommandEventArgs) DtlArchivio.EditItemIndex = -1 DtlArchivio.DataBind() End Sub Sub DtlArchivioBound(ByVal obj As Object, ByVal e As DataListItemEventArgs) Try If e.Item.ItemType = ListItemType.EditItem Then Dim DDLSupTemp As DropDownList Dim ddlsupsel As String ddlsupsel = CType(e.Item.FindControl("LblSup"), Label).Text DDLSupTemp = CType(e.Item.FindControl("DDLSup"), DropDownList) DDLSupTemp.SelectedIndex = DDLSupTemp.Items.IndexOf(DDLSupTemp.Items.FindByText(ddlsupsel)) End If Catch ex As Exception lblerrore.Text = ex.Message & " " & ex.StackTrace End Try End Sub 'Sub per caricamento Super Categoria Sub Carica_Sup() Try conn = CType(Session("Connessione"), Data.OleDb.OleDbConnection) conn.Open() MYSQL2 = "SELECT *FROM tab_sup_cat ORDER BY nome_sup_cat ASC" MyDA2 = New Data.OleDb.OleDbDataAdapter(MYSQL2, conn) MyDA2.Fill(MyDS2, "tab_sup_cat") Catch ex As Exception lblerrore.Text = "Errore rilevato: " & ex.Message Finally conn.Close() End Try End Sub Sub Carica_Archivio() Try id_archivio = Request.QueryString("pid") conn = CType(Session("connessione"), Data.OleDb.OleDbConnection) conn.Open() MYSQL = "SELECT tab_sup_cat.*, tab_cat.*, tab_sotto_cat.*, tab_archivio.*" & _ " FROM ((tab_sup_cat INNER JOIN tab_archivio" & _ " ON tab_sup_cat.ID_sup_cat = tab_archivio.id_sup_cat)" & _ " LEFT JOIN tab_cat" & _ " ON tab_cat.ID_cat = tab_archivio.id_cat)" & _ " LEFT JOIN tab_sotto_cat" & _ " ON tab_sotto_cat.ID_sotto_cat = tab_archivio.id_sotto_cat" & _ " WHERE ID_archivio = " + id_archivio + "" & _ " ORDER BY tab_sup_cat.nome_sup_cat, tab_archivio.ragione ASC" MyDA = New Data.OleDb.OleDbDataAdapter(MYSQL, conn) MyDS = New DataSet() MyDA.Fill(MyDS, "tab_archivio") Catch ex As Exception lblerrore.Text = ex.Message & " " & ex.StackTrace Finally conn.Close() End Try End Sub Sub Binda() DtlArchivio.DataSource = MyDS DtlArchivio.DataMember = "tab_archivio" DtlArchivio.DataBind() End Sub End Class
e l'editItemTemplate così:codice:<asp:Datalist SelectedItemStyle-BackColor="#cccc99" RepeatLayout=Table RepeatDirection=Vertical DataKeyField="ID_archivio" runat=server ID="DtlArchivio" OnEditCommand="DtlArchivioEdit" OnCancelCommand="DtlArchivioAnnulla" OnItemDataBound="DtlArchivioBound" >
Ho provato anche a fare un semplice:codice:<asp:Label ID="LblSup" Visible=true runat=server Text='<%#Databinder.eval(Container.Dataitem, "nome_sup_cat") %>'></asp:Label> <asp:DropDownList ID="DDLSupCat" runat=server DataSource="<%# myds2 %>" DataTextField="nome_sup_cat" DataValueField="ID_sup_cat" > </asp:DropDownList>
ma mi restituisce sempre lo stesso errore.codice:DDLSupTemp.Items.Add(New ListItem("dddd", "0"))
Vi prego ditemi come devo fare!!![]()

Rispondi quotando
