30. juli 2006 - 17:27Der er
27 kommentarer og 1 løsning
Dropdownliste i DetailsView
Hej E.
Jeg har et detailsview på min asp.net 2.0 side. I denne kontrol, har jeg lagt en templateField ind, og denne indeholder en dropdownliste. Denne liste bliver fyldt med data fra et dataset. Ikke det samme som resten af detailsWie’et)
Når jeg klikker på insert, så oprettes en ny post i databasen, men den tager ikke værdien med fra mine dropdownlister.
Mit spørgsmål er derfor..
Hvordan kan jeg hente værdien fra mine dropdown lister i mit detailsview?
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
<asp:ControlParameter ControlID="KategoriID" PropertyName="value" Name="SporgsmaalID" Type="int32" /> i stedet for : <asp:Parameter Name="KategoriID" Type="Int32" />
SporgsmaalID var noget copy paste code fra et projekt jeg har lavet. så skal du lave et : <asp:Parameter Name="KategoriID" Type="Int32" /> i codebehind skal du så bruge et updating event på objectdatasourcen og så manuelt indsætte værdien i den rette parameter.
Protected Sub ObjectDataSourceAllLinks_Inserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ObjectDataSourceStatusEventArgs) Handles ObjectDataSourceAllLinks.Inserted Dim drp_Status As DropDownList = CType(Me.DetailsView1.FindControl("DropDownList3"), DropDownList) Me.e.InsertParameters("KategoriID").DefaultValue = drp_Status.SelectedIndex() End Sub
Den siger bare at "me.e." ikke er en member af "Admin_Links_links" ved du havd dette betyder?
Protected Sub ObjectDataSourceAllLinks_Inserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ObjectDataSourceMethodEventArgs) Handles ObjectDataSourceAllLinks.Inserting
e.InputParameters("KategoriID") = 1
End Sub
Det sidste er så at finde min dropdown liste, og trække værdien ud af den. Kan man ikke gøre det med Me.DetailsView1.FindControl("DropDownList3") ??
Her er min kode: e.InputParameters("KategoriID") = CType(CType(sender, DetailsView).FindControl("DropDownList3"), DropDownList).SelectedValue Den kommer med følgende fejl:
System.InvalidCastException was unhandled by user code Message="Unable to cast object of type 'System.Web.UI.WebControls.ObjectDataSourceView' to type 'System.Web.UI.WebControls.DetailsView'." Source="App_Web_2ot71znz" StackTrace: at Admin_Links_Links.ObjectDataSourceAllLinks_Inserting(Object sender, ObjectDataSourceMethodEventArgs e) in C:\Projects\DotDkHjemmeside\Admin\Links\Links.aspx.vb:line 10 at System.Web.UI.WebControls.ObjectDataSourceView.OnInserting(ObjectDataSourceMethodEventArgs e) at System.Web.UI.WebControls.ObjectDataSourceView.ExecuteInsert(IDictionary values) at System.Web.UI.DataSourceView.Insert(IDictionary values, DataSourceViewOperationCallback callback)
System.NullReferenceException was unhandled by user code Message="Object reference not set to an instance of an object." Source="App_Web_gjprypzq" StackTrace: at Admin_Links_Links.ObjectDataSourceAllLinks_Inserting(Object sender, ObjectDataSourceMethodEventArgs e) in C:\Projects\DotDkHjemmeside\Admin\Links\Links.aspx.vb:line 8 at System.Web.UI.WebControls.ObjectDataSourceView.OnInserting(ObjectDataSourceMethodEventArgs e) at System.Web.UI.WebControls.ObjectDataSourceView.ExecuteInsert(IDictionary values) at System.Web.UI.DataSourceView.Insert(IDictionary values, DataSourceViewOperationCallback callback)
Protected Sub ObjectDataSourceAllLinks_Inserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ObjectDataSourceMethodEventArgs) Handles ObjectDataSourceAllLinks.Inserting
du kan prøve at benytte OnItemUpdating/OnItemInserting på selve detailsviewet. Så burde du kunne bruge: CType(CType(sender, DetailsView).FindControl("DropDownList3"), DropDownList)
Protected Sub DetailsView1_ItemInserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewInsertEventArgs) Handles DetailsView1.ItemInserting
Protected Sub DetailsView1_ItemInserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewInsertEventArgs) Handles DetailsView1.ItemInserting ObjectDataSourceLinkType.InputParameters("KategoriID")=CType(CType(sender, DetailsView).FindControl("DropDownList3"), DropDownList).Selectedvalue End Sub
pas pas pas. Den modtager ikke en string, den forventer en ObjectDataSouce
Protected Sub DetailsView1_ItemInserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewInsertEventArgs) Handles DetailsView1.ItemInserting ObjectDataSourceAllLinks.InsertParameters("KategoriID") = CType(CType(sender, DetailsView).FindControl("DropDownList3"), DropDownList).SelectedValue
prøv lige med ObjectDataSourceAllLinks.InsertParameters("KategoriID").Defaultvalue = CType(CType(sender, DetailsView).FindControl("DropDownList3"), DropDownList).SelectedValue
System.NullReferenceException was unhandled by user code Message="Object reference not set to an instance of an object." Source="App_Web_icnnvgvy" StackTrace: at Admin_Links_Links.DetailsView1_ItemInserting(Object sender, DetailsViewInsertEventArgs e) in C:\Projects\DotDkHjemmeside\Admin\Links\Links.aspx.vb:line 17 at System.Web.UI.WebControls.DetailsView.OnItemInserting(DetailsViewInsertEventArgs e) at System.Web.UI.WebControls.DetailsView.HandleInsert(String commandArg, Boolean causesValidation) at System.Web.UI.WebControls.DetailsView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) at System.Web.UI.WebControls.DetailsView.OnBubbleEvent(Object source, EventArgs e) at System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) at System.Web.UI.WebControls.DetailsViewRow.OnBubbleEvent(Object source, EventArgs e) at System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) at System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) at System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) at System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Jeg kunne ikke finde ud af FindControl metoden, men man kan give sin dropdownliste en SelectedIndex='<%# Eval("KategoriID") %>' property. Dette manglede....
MANGE TAK TIL dr chaos. Det var super hjælp. Giver du ikke et svar :-)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.