webForumDet fria alternativet

Fylla kontroll ifrån kompilerad klass

.NET

7 svar · 311 visningar · startad av erka

Medlem sedan dec. 19996 522 inlägg
Frågan#1

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 ? :)

Medlem sedan apr. 20012 266 inlägg
#2

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 =)

Medlem sedan dec. 19996 522 inlägg
#3

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 ?

Medlem sedan dec. 19996 522 inlägg
#4

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.

Medlem sedan apr. 20012 266 inlägg
#5

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.

Medlem sedan dec. 19996 522 inlägg
#6

Ok, så det är meningen att man ska fylla kontroller i codebehind då alltså.

Medlem sedan apr. 20012 266 inlägg
#7

ja, och inte i business

Medlem sedan dec. 19996 522 inlägg
#8

Ok :) Då är jag lite klarare i skallen förstår tom varför ;) , tack renholm.

263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)