Click here to Skip to main content
15,891,248 members
Please Sign up or sign in to vote.
2.50/5 (2 votes)
See more:
I created a checkboxlist (cbSh) dynamically to list some employee data.
I have tried to declare something like this:
Dim checklist As CheckBoxList = CType(FindControl("cbSh"), CheckBoxList)


the error occured is
Unable to cast object of type 'System.Web.UI.WebControls.CheckBox' to type 'System.Web.UI.WebControls.CheckBoxList'


Where should I modify my code to be able finding my checkboxlist and getting the selected value?
Thanks for your time.

UPDATED>>>

This is the code to create checkboxlist.

VB
Dim sqlGetPrdNme As String = "SELECT * FROM Q_VIEWDATA WHERE REFNO_T = '201207-1i' AND PRDNAME_T NOT IN ('QA','SEP','OTH')"
     Dim SHprodName As DataTable = DBLayer.Util.Data.MsSql.DBFunction.BuildDataTable(sqlGetPrdNme, DBLayer.ClsConnection.getConnString("MP_QFMS"))

     For Each dr As DataRow In SHprodName.Rows

         Dim TempPanel As New Panel
         TempPanel.Width = 210
         TempPanel.Height = 300
         TempPanel.HorizontalAlign = HorizontalAlign.Center
         TempPanel.BorderStyle = BorderStyle.Solid

         Dim labelProd As New Label
         labelProd.Font.Bold = True
         labelProd.ForeColor = Drawing.Color.Red
         labelProd.Text = dr("PRDNAME_T")

         Dim labelP As New Label
         labelP.Font.Bold = True
         labelP.ForeColor = Drawing.Color.Red
         labelP.Text = dr("PRDNAME_T")

         Dim lit As New Literal
         lit.Text = "</b></br>"

         Dim sqlShophead As String = "SELECT DISTINCT list3.DEPTID_T, list3.CSCTRNM_T, list3.NEW_COST_CTR_T, sh.EMPID_" & _
                                     "T, sh.NAME_T FROM (SELECT list1.DEPTID_T, list1.CSCTRNM_T, list2.NEW_COST_CTR_T " & _
                                     "FROM (SELECT DEPTID_T, CSCTRNM_T FROM dbo.Q_HR_PAYROL_SECTION_SHOP_DTLS WHERE (P" & _
                                     "LANTID_T = 'D01' OR PLANTID_T = 'D06') AND (CSCTRFLAG_T = 'Y')) AS list1 LEFT OU" & _
                                     "TER JOIN (SELECT OLD_COST_CTR_T, NEW_COST_CTR_T, ACTIVE_FLAG_B, CSCTRNM_T, CSCTR" & _
                                     "DESC_T, PLANTID_T, CSCTRFLAG_T, COST_CENTRE_T, INTERNAL_ORDER_T, PROFIT_CENTRE_T" & _
                                     ", CSCTRNAME_T, ISCHARGE_TO_AD_T, PLANTID_CODE_T, PLANTDESC_T FROM dbo.Q_COSTCENT" & _
                                     "RE WHERE (CSCTRFLAG_T = 'y')) AS list2 ON list1.CSCTRNM_T = list2.CSCTRNM_T) AS " & _
                                     "list3 INNER JOIN (SELECT EMPID_T, NAME_T, CSCTRID_T, STATUS_T, JOBTITLE_T FROM E" & _
                                     "PJ_Employee.dbo.EMPLOYEE_DATA WHERE (STATUS_T <> '*') AND (JOBTITLE_T LIKE '%SHO" & _
                                     "PHEAD%') AND (ORIGINID_T = EMPID_T)) AS sh ON list3.NEW_COST_CTR_T = sh.CSCTRID_" & _
                                     "T WHERE (list3.DEPTID_T = '" + dr("PRDNAME_T") + "') "

         Dim dtShophead As DataTable = DBLayer.Util.Data.MsSql.DBFunction.BuildDataTable(sqlShophead, DBLayer.ClsConnection.getConnString("Maintenance"))

         Dim cbSh As New CheckBoxList
         cbSh.DataSource = dtShophead
         cbSh.DataValueField = "EMPID_T"
         cbSh.DataTextField = "NAME_T"
         cbSh.DataBind()


         Dim sqlManager As String = "SELECT DISTINCT list3.DEPTID_T, list3.CSCTRNM_T, list3.NEW_COST_CTR_T," & _
                                     " mgr.EMPID_T, mgr.NAME_T FROM (SELECT list1.DEPTID_T, list1.CSCTRNM_T," & _
                                     " list2.NEW_COST_CTR_T FROM (SELECT DEPTID_T, CSCTRNM_T FROM dbo.Q_HR_P" & _
                                     "AYROL_SECTION_SHOP_DTLS WHERE (PLANTID_T = 'D01' OR PLANTID_T = 'D06')" & _
                                     " AND (CSCTRFLAG_T = 'Y')) AS list1 LEFT OUTER JOIN (SELECT OLD_COST_CT" & _
                                     "R_T, NEW_COST_CTR_T, ACTIVE_FLAG_B, CSCTRNM_T, CSCTRDESC_T, PLANTID_T," & _
                                     " CSCTRFLAG_T, COST_CENTRE_T, INTERNAL_ORDER_T, PROFIT_CENTRE_T, CSCTRN" & _
                                     "AME_T, ISCHARGE_TO_AD_T, PLANTID_CODE_T, PLANTDESC_T FROM dbo.Q_COSTCE" & _
                                     "NTRE WHERE (CSCTRFLAG_T = 'y')) AS list2 ON list1.CSCTRNM_T = list2.CS" & _
                                     "CTRNM_T) AS list3 INNER JOIN (SELECT EMPID_T, NAME_T, CSCTRID_T, STATU" & _
                                     "S_T, JOBTITLE_T FROM EPJ_Employee.dbo.EMPLOYEE_DATA WHERE (STATUS_T <>" & _
                                     " '*') AND (JOBTITLE_T LIKE '%MANAGER%') AND (JOBTITLE_T <> 'ASST. GENE" & _
                                     "RAL MANAGER') AND (ORIGINID_T = EMPID_T)) AS mgr ON list3.NEW_COST_CTR" & _
                                     "_T = mgr.CSCTRID_T WHERE (list3.DEPTID_T = '" + dr("PRDNAME_T") + "') "

         Dim dtMgr As DataTable = DBLayer.Util.Data.MsSql.DBFunction.BuildDataTable(sqlManager, DBLayer.ClsConnection.getConnString("Maintenance"))

         Dim cbMgr As New CheckBoxList
         cbMgr.DataSource = dtMgr
         cbMgr.DataValueField = "EMPID_T"
         cbMgr.DataTextField = "NAME_T"
         cbMgr.DataBind()

         PlaceHolder1.Controls.Add(labelP)
         'PlaceHolder1.Controls.Add(lit)
         PlaceHolder1.Controls.Add(cbSh)
         PlaceHolder1.Controls.Add(lit)

         PlaceHolder2.Controls.Add(labelProd)
         PlaceHolder2.Controls.Add(cbMgr)
         PlaceHolder2.Controls.Add(lit)
Posted
Updated 25-Jul-12 22:11pm
v2

1 solution

Post your code of creating the dynamic checkboxlist.
Make sure is of type 'System.Web.UI.WebControls.CheckBoxList' and not 'System.Web.UI.WebControls.CheckBox'.
 
Share this answer
 
Comments
snamyna 26-Jul-12 4:12am    
I am pretty sure that I have created checkboxlist, not a checkbox. right?
graciax8 26-Jul-12 4:23am    
your problem is in the binding.

your code:

Dim cbSh As New CheckBoxList
cbSh.DataSource = dtShophead
cbSh.DataValueField = "EMPID_T"
cbSh.DataTextField = "NAME_T"
cbSh.DataBind()

for checkboxlist, it should be like:

ListItemCollection itemsCollection = CheckBoxList1.Items;
itemsCollection.Add(new ListItem("item 1", "1"));
itemsCollection.Add(new ListItem("item 2", "2"));

or


ListItemCollection itemsCollection = CheckBoxList1.Items;
itemsCollection.Add(new ListItem("item 1", "1"));
itemsCollection.Add(new ListItem("item 2", "2"));
snamyna 26-Jul-12 5:36am    
When the function loops, the items in the checkboxlist is reset and it binds new data. How can I bind the all the data that go through the loop?
graciax8 26-Jul-12 22:39pm    
Change your this

Dim cbMgr As New CheckBoxList
cbMgr.DataSource = dtMgr
cbMgr.DataValueField = "EMPID_T"
cbMgr.DataTextField = "NAME_T"
cbMgr.DataBind()


to this

Dim cbMgr As New CheckBoxList
For Each dr As DataRow In dtMgr.Rows
cbMgr.Items.Add(New ListItem("NAME_T", "EMPID_T"))
Next
graciax8 27-Jul-12 5:12am    
mark as answer if it helped you. :)

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900