checkd_change gridviewrow中以编程方式生成的复选框的事件
本文关键字:方式生 复选框 事件 编程 change gridviewrow checkd | 更新日期: 2023-09-27 18:16:54
我有一个保存用户数据的GridView
。当Page_Load
方法被调用时,我使用DataTable
获取数据,然后将其绑定到GridView
。在每行的末尾,我添加了一个CheckBox
。此CB用作用户想要编辑的实体的指针。
Check_Changed
事件的复选框。如果以编程方式生成控件,我不知道如何添加处理程序。我还需要行索引(字段值也是可能的,但是列标题和列本身是隐藏的)。
foreach (GridViewRow gvr in grdMitgliedsliste.Rows)
{
//add checkbox for every row
TableCell cell = new TableCell();
CheckBox box = new CheckBox();
cell.Controls.Add(box);
gvr.Cells.Add(cell);
//Hide columns for userid, status, etc.
gvr.Cells[0].Visible = false;
gvr.Cells[3].Visible = false;
gvr.Cells[4].Visible = false;
gvr.Cells[5].Visible = false;
gvr.Cells[8].Visible = false;
gvr.Cells[9].Visible = false;
}
我已经尝试从这里实现处理程序,但它没有给我索引参数,所以程序无法确定复选框在哪一行被选中。
protected void Page_Load(object sender, EventArgs e)
{
List<string> names = new List<string>();
names.Add("Jhonatas");
this.GridView1.DataSource = names;
this.GridView1.DataBind();
foreach (GridViewRow gvr in GridView1.Rows)
{
//add checkbox for every row
TableCell cell = new TableCell();
CheckBox box = new CheckBox();
box.AutoPostBack = true;
box.ID = gvr.Cells[0].Text;
box.CheckedChanged += new EventHandler(box_CheckedChanged);
cell.Controls.Add(box);
gvr.Cells.Add(cell);
}
}
void box_CheckedChanged(object sender, EventArgs e)
{
string test = "ok";
}
TableCell cell = new TableCell();
CheckBox box = new CheckBox();
box.Check += new EventHandler(Checked_Changed);
cell.Controls.Add(box);
gvr.Cells.Add(cell);
对不起,我已经准备开车回家了,所以这只是一个快速的回答。也许你得把后面的事件更正一下。"事件"… 你应该这样做:
首先当你生成复选框 时 CheckBox box = new CheckBox();
box.AutoPostBack=true;
为复选框提供一个id
box.ID=Convert.toString(Session["Count"]);
在会话中加载页面时初始化"Count"。每次添加一个新的复选框时,也增加"Count"。
其次,为动态复选框定义事件处理程序,如下所示: box.CheckedChange += MyHandler;
并定义MyHandler
protected void MyHandler(object sender, EventArgs e)
{
//Do some stuff
}
现在您可以获得MyHandler中触发事件的复选框的id,它实际上是行号。
CheckBox cb = (CheckBox)sender;
string id = cb.ID;