怎么为<Itemtemplate></Itemtemplate>里的控件加事件
下面以DataList里的CheckBox为例
在讲事件之前顺便讲一下怎么访问Itemtemplate里的控件
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在DataList或者Repeater中,<Itemtemplate></Itemtemplate>里的控件在.cs文件里不能直接访问的,得像下面这样访问
//循环DataList里面的Control,
for (int i = 0; i < this.DataList1.Items.Count; i++)
{
//用FindControl()方法遍历找到控件强转成控件类型
CheckBox chkbox = this.DataList1.Items[i].FindControl("chkFoodCheck") as CheckBox;
//如果CheckBox 是被checked的,
if (chkbox.Checked)
{
//做相应操作
}
}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
控件访问到了,现在我们来给DataList里的CheckBox控件加事件.
在前台的控件代码中加上AutoPostBack="true" Checked='<%# Eval("Column1") %>' 此句为绑定的列
<asp:CheckBox ID="chkFoodCheck" runat="server" AutoPostBack="true" Checked='<%# Eval("Selected") %>' OnCheckedChanged="chkFoodCheck_CheckedChanged" />
而要注意的一点就是,在Page_Load方法中,要加上if (!IsPostBack)的判断
protected void Page_Load(object sender, EventArgs e)
{
//即如下:
if (!IsPostBack)
{
DataList1.DataSource = 数据源表;
DataList1.DataBind();
}
}
//然后在CheckBox的CheckedChanged中就可以做你想要的操作了
protected void chkFoodCheck_CheckedChanged(object sender, EventArgs e)
{
//做相应操作
}
下面做点解释:
1)为什么要加:AutoPostBack="true"
MSDN上对AutoPostBack的解释是:获取一个值,该值指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问。
初次加载页面时为False,再次加载时为True.加上这句才会去执行后台代码.
2)为什么要把数据绑定在if (!IsPostBack){}内,因为AutoPostBack="true" ,导致每次点击,页面都会自动刷新,会再次执行Page_Load方法,导致数据的重新绑定,这样的话你就取不到相应正确的选择项数据.
本文介绍了如何在ASP.NET的DataList或Repeater中为<Itemtemplate>内部的控件,如CheckBox,添加事件。通过循环Items并使用FindControl方法访问控件,同时讲解了在CheckBox上设置AutoPostBack属性以及在Page_Load事件中加入IsPostBack判断以确保数据绑定只在首次加载时执行。最后,详细解释了AutoPostBack的作用以及为何需要在IsPostBack中进行数据绑定。

4944

被折叠的 条评论
为什么被折叠?



