DataGrid中使用CheckBox的CheckedChanged事件

出处: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();
}

当DataGrid中某行的CheckBox发生变化时获得这行的行号

首先将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

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页