C# 以不同的方法使用全局控件

C# 以不同的方法使用全局控件,c#,asp.net,C#,Asp.net,我试图声明一个全局控件(checkboxlist)变量并在一个方法中填充,并检查在另一个方法中选择了哪一个 public CheckBoxList chklExtraDrink ; protected void Page_Load(object sender, EventArgs e) { chklExtraDrink = new CheckBoxList(); } //this function will fill the checkboxlist

我试图声明一个全局控件(checkboxlist)变量并在一个方法中填充,并检查在另一个方法中选择了哪一个

    public CheckBoxList chklExtraDrink ;


 protected void Page_Load(object sender, EventArgs e)
{

     chklExtraDrink = new CheckBoxList();

}
    //this function will fill the checkboxlist
    public void fillupCheckboxlist(GridViewRow row)
{
  chklExtraDrink.RepeatColumns = 3;
      Accordion accorExtra = (row.FindControl("accorExtra") as Accordion);

    DataSet ds = new DataSet();
    string cmdstr = "select p.name + ' (€' + cast(pp.value as varchar) + ')' as name, (CAST(p.product_id as varchar) + ',' + CAST(pp.price_id as varchar))as valueF from product p, price_product pp  WHERE p.product_id = pp.product_id and p.main_product_id = @mainProductId";
    SqlDataAdapter adp = new SqlDataAdapter(cmdstr, new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["db_pizzaConnectionString"].ConnectionString));
    adp.SelectCommand.Parameters.AddWithValue("@mainProductId", 26);
    adp.Fill(ds);
    chklExtraDrink.DataSource = ds;
    chklExtraDrink.DataTextField = "name";
    chklExtraDrink.DataValueField = "valueF";
    chklExtraDrink.DataBind();

    AccordionPane ap1 = new AccordionPane();
    ap1.HeaderContainer.Controls.Add(new LiteralControl("text"));
    ap1.ContentContainer.Controls.Add(chklExtraDrink);

    accorExtra.Panes.Add(ap1);

}
   //this function will eventually check all selected items
   public void btnOkay_Click(object sender, EventArgs e)
{


foreach (ListItem item in chklExtraDrink.Items)
        if (item.Selected) values.Add(new Order(item.Value.Split(',')[0], item.Value.Split(',')[1], emptyList, 1));
    }

使用此代码,我不会从复选框列表中返回任何值。

您能用事件处理程序显示代码吗?通常,btnClick中会包含处理代码。可以使用“属性”窗口的“事件”视图查看事件并选择要处理的事件

点击按钮只是第一步。您需要分配一个处理程序,并编写一个在事件触发它时调用的处理程序方法

编辑: 链接是短暂的,但在它持续的过程中,以下是Microsoft文档:

下面是一个简单的例子:

namespace StackOverflow
{
    public partial class UserForm : Form      
    {
        public UserForm()
        {
            InitializeComponent();
        }

        private void clbCheckedListBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            // code here or call to generic handler
        }
    }
}

单击按钮时,页面将被重新加载,页面加载事件将再次执行,在执行btnOkay_Click()之前创建一个新的空复选框列表。我尝试使用page_init方法,但结果相同。我不确定是否可以使用这部分代码。我使用的不是winform,而是页面。该单击事件在aspx页面中调用。我需要在哪里初始化此控件?