C# 如何访问以编程方式添加的复选框

C# 如何访问以编程方式添加的复选框,c#,asp.net,checkbox,C#,Asp.net,Checkbox,我正在开发一个应用程序,我需要添加过滤器。 为此,我将以编程方式添加复选框,因为筛选选项不是预定义的,它取决于表中的值,我将复选框添加为“休耕” public void addCusineCheckbox() { DataTable CusineList = Sql.ExecuteSelectCommand("select prod_group_id,Prod_group_name from Master_Prod_Groups"); for (i

我正在开发一个应用程序,我需要添加过滤器。 为此,我将以编程方式添加复选框,因为筛选选项不是预定义的,它取决于表中的值,我将复选框添加为“休耕”

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 void addCusineCheckbox()
{
DataTable CusinList=Sql.ExecuteSelectCommand(“从主产品组中选择产品组id、产品组名称”);
for(int i=0;i
这将帮助用户选择所需的字段(还有其他选项可供选择),然后单击该字段上的“应用过滤器”,并尝试访问“作为休耕”添加的复选框

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;
}
公共字符串getCusineFilterString()
{
字符串CusineID=null;
DataTable CusinList=Sql.ExecuteSelectCommand(“从主产品组中选择产品组id、产品组名称”);
for(int i=0;i
但它给出了一个错误,即对象未设置为实例


我不知道如何访问该复选框。

存在某些限制:

  • 无法访问ASP.net中未在Init之前或之上添加的任何控件。因此,您可以在OnInit页上添加控件,然后就可以访问它了。但在添加控件时必须小心,以便在正确的位置添加控件,而不是重复

  • 你不应该写信

    复选框chk=(复选框)Page.FindControl(“chk”)

而是写

var chkControl = Page.FindControl("chk");
if(chkControl != null /*&& check type*/) {
  CheckBox chk = (CheckBox)chkControl;
// and do something
}
  • 如果在设计时使用CheckBoxList控件,并在运行时更改绑定值以填充不同的复选框,效果会更好

  •  ChkBox1.Items.Add(new ListItem("Item 1", "Item1"));
    
  • 在设计时创建复选框,并根据用户操作显示隐藏


希望有帮助

有一些限制:

  • 无法访问ASP.net中未在Init之前或之上添加的任何控件。因此,您可以在OnInit页上添加控件,然后就可以访问它了。但在添加控件时必须小心,以便在正确的位置添加控件,而不是重复

  • 你不应该写信

    复选框chk=(复选框)Page.FindControl(“chk”)

而是写

var chkControl = Page.FindControl("chk");
if(chkControl != null /*&& check type*/) {
  CheckBox chk = (CheckBox)chkControl;
// and do something
}
  • 如果在设计时使用CheckBoxList控件,并在运行时更改绑定值以填充不同的复选框,效果会更好

  •  ChkBox1.Items.Add(new ListItem("Item 1", "Item1"));
    
  • 在设计时创建复选框,并根据用户操作显示隐藏


希望有帮助

有一些限制:

  • 无法访问ASP.net中未在Init之前或之上添加的任何控件。因此,您可以在OnInit页上添加控件,然后就可以访问它了。但在添加控件时必须小心,以便在正确的位置添加控件,而不是重复

  • 你不应该写信

    复选框chk=(复选框)Page.FindControl(“chk”)

而是写

var chkControl = Page.FindControl("chk");
if(chkControl != null /*&& check type*/) {
  CheckBox chk = (CheckBox)chkControl;
// and do something
}
  • 如果在设计时使用CheckBoxList控件,并在运行时更改绑定值以填充不同的复选框,效果会更好

  •  ChkBox1.Items.Add(new ListItem("Item 1", "Item1"));
    
  • 在设计时创建复选框,并根据用户操作显示隐藏


希望有帮助

有一些限制:

  • 无法访问ASP.net中未在Init之前或之上添加的任何控件。因此,您可以在OnInit页上添加控件,然后就可以访问它了。但在添加控件时必须小心,以便在正确的位置添加控件,而不是重复

  • 你不应该写信

    复选框chk=(复选框)Page.FindControl(“chk”)

而是写

var chkControl = Page.FindControl("chk");
if(chkControl != null /*&& check type*/) {
  CheckBox chk = (CheckBox)chkControl;
// and do something
}
  • 如果在设计时使用CheckBoxList控件,并在运行时更改绑定值以填充不同的复选框,效果会更好

  •  ChkBox1.Items.Add(new ListItem("Item 1", "Item1"));
    
  • 在设计时创建复选框,并根据用户操作显示隐藏


希望对您有所帮助

您可以使用
Request.Forms
collection获取值。它保留窗体上每个控件的值。但是它在
name
上工作,而不是
ID

更好的方法是使用空的
复选框列表
,并在运行时添加项

这里有一个关于
复选框列表的讨论链接

例子 创建一个空的

<asp:CheckBoxList ID="ChkBox1" runat="server"></asp:CheckBoxList>
您可以使用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.
        }
    }

您可以使用
Request.Forms
collection获取值。它保留窗体上每个控件的值。但是它在
name
上工作,而不是
ID

更好的方法是使用空的
复选框列表
,并在运行时添加项

这里有一个关于
复选框列表的讨论链接

例子 创建一个空的

<asp:CheckBoxList ID="ChkBox1" runat="server"></asp:CheckBoxList>
您可以使用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.
        }
    }

您可以使用
Request.Forms
collection获取值。它保留窗体上每个控件的值。但是它在
name
上工作,而不是
ID