出处:http://i.cn.yahoo.com/liahtobjtosh/blog/p_93/
使用DataGrid的过程中常会用到CheckBox控件,并使用它的CheckedChanged事件。使用如下:
1、CheckBox控件需要设置AutoPostBack="true"
<asp:CheckBox id="chbIsActive" runat="server" AutoPostBack="true"></asp:CheckBox>
2、CheckBox控件的事件须在DataGrid的ItemCreated定义才能生效
private void grdStructure_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
CheckBox chbIsActive = e.Item.FindControl("chbIsActive") as CheckBox;
chbIsActive.CheckedChanged += new EventHandler(chbIsActive_CheckedChanged);
}
}
3、编写事件代码
private void chbIsActive_CheckedChanged(object sender, EventArgs e)
{
CheckBox chbIsActive = (CheckBox)sender;
Guid structureUID = new Guid(chbIsActive.Attributes["StructureUID"]);
bool isActive = chbIsActive.Checked;
IPMStructureManager manager = PMStructureManagerFactory.GetInstance();
manager.SetActive(structureUID, isActive);
this.Binding();
}
首先将CheckBox1的AutoPostBack属性设置为true
private void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
DataGridItem t = (DataGridItem)((CheckBox)sender).Parent.Parent;
int i = t.ItemIndex;
CheckBox tCheckBox1 = (CheckBox)sender;
if(tCheckBox1.Checked)
{
DataTable tempTable = (DataTable)Session["eduGrid"];
Session["Group"]=tempTable.Rows[i]["groupid"];
Session["PassScore"]=tempTable.Rows[i]["passgrade"];
Session["Title"]="学习中心"+Session["Group"].ToString()+"在"+tempTable.Rows[i]["ValidDuration"]+"的考试";
this.lbTestGroup.Text = Session["Group"].ToString();
this.lbPassScore.Text = Session["PassScore"].ToString();
this.txTestTitle.Text = Session["Title"].ToString();
}
}
其他解决方案
如何单击在DataGrid中绑定的CheckBox时触发一个事件
http://www.010gc.cn/2007220/J22027088.shtml
DataGrid里CheckBox事件
http://www.cnblogs.com/wf5360308/articles/427744.html