[英]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.