[英]cannot find checkbox control added on rowdatabound grid view even
我已添加控制权
if (e.Row.RowType == DataControlRowType.DataRow)
{
CheckBox chk = new CheckBox();
chk.EnableViewState = true;
chk.Enabled = true;
chk.ID = "chkb";
DataRowView dr = (DataRowView)e.Row.DataItem;
chk.Checked = (dr[0].ToString() == "true");
e.Row.Cells[1].Controls.Add(chk);
e.Row.TableSection = TableRowSection.TableBody;
}
并试图找到
if (GridView2.Rows.Count>0)
{
foreach (GridViewRow row in GridView2.Rows)
{
CheckBox cb =(CheckBox) GridView2.Rows[2].Cells[1].FindControl("chkb");
if (cb != null && cb.Checked)
{
Response.Write("yest");
}
}
}
但是我找不到它...实际上我的问题是我需要创建一个动态列表..为此,我正在使用gridview
您需要在每个回发中创建动态控件,因为它已在当前生命周期的结尾处处理。 但是,当您对GridView
进行数据绑定时,只会触发RowDataBound
通常仅if(!IsPostBack)
(页面首次加载)时执行此操作。
您应该在RowCreated
创建动态控件,而不是在每次回发时都调用它。 由于RowCreated
首先触发RowCreated
, RowCreated
可以根据需要在RowDataBound
这些控件进行数据绑定。
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
CheckBox chk = new CheckBox();
chk.EnableViewState = true;
chk.Enabled = true;
chk.ID = "chkb";
e.Row.Cells[1].Controls.Add(chk);
}
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
var chk = (CheckBox)e.Row.FindControl("chkb");
// databind it here according to the DataSource in e.Row.DataItem
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.