C# 以不同的方法使用全局控件
我试图声明一个全局控件(checkboxlist)变量并在一个方法中填充,并检查在另一个方法中选择了哪一个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
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页面中调用。我需要在哪里初始化此控件?