[英]How to Access Programmatically Added checkbox
我正在開發一個需要添加過濾器的應用程序。 為此,由於過濾選項未預先定義,因此以編程方式添加復選框,這取決於表中的值,我將復選框添加為休假
public void addCusineCheckbox()
{
DataTable CusineList = Sql.ExecuteSelectCommand("select prod_group_id,Prod_group_name from Master_Prod_Groups");
for (int i = 0; i < CusineList.Rows.Count; i++)
{
CheckBox chkCusine = new CheckBox();
chkCusine.ID = "chk" + CusineList.Rows[i]["Prod_group_name"].ToString();
chkCusine.Text = CusineList.Rows[i]["Prod_group_name"].ToString();
divCusineFilter.Controls.Add(chkCusine);
}
}
這可以幫助用戶選擇必填字段(還有其他更多選項可供選擇),然后在該應用上單擊“應用過濾器”,以嘗試訪問添加的復選框作為休假框
public string getCusineFilterString()
{
string CusineID =null;
DataTable CusineList = Sql.ExecuteSelectCommand("select prod_group_id,Prod_group_name from Master_Prod_Groups");
for (int i = 0; i < CusineList.Rows.Count; i++)
{
CheckBox chk = (CheckBox)Page.FindControl("chk" + CusineList.Rows[i]["Prod_group_name"]);
if (chk.Checked == true)
{
if (i == 0)
{
CusineID = CusineList.Rows[i]["prod_group_id"].ToString();
}
else
{
CusineID = CusineID + "," + CusineList.Rows[i]["prod_group_id"].ToString();
}
}
}
return CusineID;
}
但它給出了對象未設置為實例的錯誤。
我不知道要訪問該復選框。
有一些限制:
您無法訪問ASP.net中沒有在Init之前或之前添加的任何控件。 因此,您可以在Page OnInit上添加控件,然后將可以訪問它。 但是您在添加控件時必須小心,以便將它們添加到正確的位置而不要重復。
你不應該寫
CheckBox chk =(CheckBox)Page.FindControl(“ chk”);
改寫
var chkControl = Page.FindControl("chk");
if(chkControl != null /*&& check type*/) {
CheckBox chk = (CheckBox)chkControl;
// and do something
}
如果您在設計時使用CheckBoxList控件並在運行時更改綁定值以填充不同的復選框會更好。
在設計時創建復選框,並根據用戶操作顯示隱藏。
希望能幫助到你
您可以使用Request.Forms
集合獲取值。 它保留窗體上每個控件的值。 但是它只作用於name
而不作用於ID
。
更好的方法是使用空的CheckBoxList
並在運行時添加項目。
這是一個有關CheckBoxList
的鏈接
如何獲取CheckBoxList選定的值,我所擁有的似乎不起作用C#.NET / VisualWebPart
創建一個空的
<asp:CheckBoxList ID="ChkBox1" runat="server"></asp:CheckBoxList>
並在運行時添加項目
ChkBox1.Items.Add(new ListItem("Item 1", "Item1"));
您可以通過使用如下的foreach循環獲取數據
// Loop through each item.
foreach (ListItem item in ChkBox1.Items)
{
if (item.Selected)
{
// If the item is selected, add the value to the list.
}
else
{
// Item is not selected, do something else.
}
}
您可以在Page_Load中添加您的復選框。 我認為問題出在使用Page.FindControl。 使用divCusineFilter.FindControl而不是Page.FindControl,並確保您也將復選框添加到回發頁面中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.