EerkaMedlem sedan dec. 19996 522 inlägg Hej!
På min aspx sida har jag en panel (myPanel) i denna panel finns det en asp dropdownlist (DDLcause). I en sub som ligger i en kompilerad klass vill jag fylla denna dropdown med värdet ifrån en databas, hur jag binder datat har jag hajjat men hur skriver jag för att hitta kontrollen, deklarerar den, hur ?
tex
Public Sub Get_NCRCauses(CompanyId)
Dim DDLcause As System.Web.UI.WebControls.DropDownList
DDLcause.items.add(New Listitem("Erka", "12"))
DDLcause.items.add(New Listitem("Jonas", "10"))
End Sub
Den anropas ifrån min codebehind sida genom
Dim objTCAs TCBuisness = New TCBuisness ()
objTC.Get_NCRCauses(CompanyId)
objTC= Nothing
Då får jag ju som vanligt, Object reference not set to an instance of an object. Jag har alltså inte hajjat hur jag påverkar kontroller på aspx sidorna ifrån kompilerade klasser/namespaces som jag har.
Någon vänlig själ där ute ? :)
RrenholmMedlem sedan apr. 20012 266 inlägg Hum, Business lagrets funktion skall retunera t.ex en arraylist så här:
DropDown.DataSource = obj.TC.Get_NCRCauses();
DropDown.Databind();
Public Sub Get_NCRCauses() As ArrayList
return ArrayList
End Sub
Min VB.NET är lite rostig så hoppas du förstår hur jag menar samt att jag har fattat hur du menar =)
EerkaMedlem sedan dec. 19996 522 inlägg Tack renholm, men jag förstår inte vad du menar. Jag undrade över hur jag ifrån mitt buislager binder data till min kontroll på aspx sidorna.
I min codebehind vill jag anropa en funktion i Buislagret som fyller aspx sidans dropdownkontroll med data från en databas, denna data får jag ut genom att anropa mitt datalager som returnerar ett datatable till buislagret.
1. Aspx sidan (ingen vb kod), dropdownlistkontrollen DDLcause
2. Codebehind (anropar funktionen NCRCauses i buisslagret)
3. Buisslagret binder data till DDLcause på aspx sidan genom binda en datatable till den. Datatablen får jag genom att anropa funktionen Get_NCRCauses i Datalagret
4. Datalager, funktionen Get_NCRCauses som får ett datatable ifrån mitt generella databashanteringslager. Jag har detta 4:e lager för jag vill ha sqlfrågorna i ett eget lager då den kanske kommer användas i en winfort etc senare.
5.Generellt databashanteringslager
Funktion som returnerar ett datatable till 4. Datalager
Jag kanske ska binda datat till dropdownlistkontrollen direkt i codebehind istället ? Det kanske är fel tänkt, det du försöker illustrera ? I vilket lager är det mest logiskt / praxis att fylla en webkontroll med data ?
EerkaMedlem sedan dec. 19996 522 inlägg Jag löste det genom att lägga denna funktionen i mitt Buisslager
Public Sub List_NCRCauses(S As Object, E As EventArgs)
Dim DDLcause As System.Web.UI.WebControls.DropDownList = CType(s.Findcontrol("DDLcause"), DropDownList)
Dim objData As NCRBuissData = New NCRBuissData
Dimm MyDataTable As DataTable = objData.Get_NCRCauses
objData = Nothing
Lcause.DataSource = MyDataTable
Lcause.DataValueField = "Pk_CauseId"
Lcause.DataTextField = "CauseName"
Lcause.DataBind()
End Sub
Problemet är att min sub i codebehind ser ut så här
Sub Page_load(Sender As Object, E As EventArgs)
If NOT (Page.IsPostBack)
Dim objNCR As NCRBuisness = New NCRBuisness()
objNCR.List_NCRCauses(Sender,e)
objNCR = Nothing
End If
End Sub
och skicka in (Sender,e) till subben List_NCRCauses känns konstigt, har jag fel ?
Det andra problemet är att jag skulle vilja skicka in en parameter till denna sub som talar om ifall jag ska fylla den med någoting över huvudtaget, hur ska man lyckas lösa det.
RrenholmMedlem sedan apr. 20012 266 inlägg Ok, men grejen med Business lagret är inte direkt att du ska binda kontroller där utan att ge data till kontroller så som i mitt exempel.
EerkaMedlem sedan dec. 19996 522 inlägg Ok, så det är meningen att man ska fylla kontroller i codebehind då alltså.
EerkaMedlem sedan dec. 19996 522 inlägg Ok :) Då är jag lite klarare i skallen förstår tom varför ;) , tack renholm.