我现在有一模板列,在项中放CheckBox,而在页眉页放了一个CheckBoc,现在我要实现的是,点页眉的CheckBox,响应一事件,项中的所有CheckBox都被选择,我在.aspx页面中,定义了页眉的CheckBox响应事件,然后在后太代码,写这个事件,但是我在写事件的时候,我无法找到该页眉的CheckBox,开始,我是这么写的,
CheckBox ckb = (CheckBox)DataGrid1.Items[-1].Cells[0].FindControls("CheckBox");
if(ckb.Checked ==true)
{
   /\\\\\\\\这里的代码都是控制DataGrid项中CheckBox的改变。
}但是出错,提示Item[-1]中-1不正确,必须为非负数。
然后我改成:
CheckBox ckb = (CheckBox)DataGrid1.FindControls("CheckBox");
if(ckb.Checked ==true)
{
   /\\\\\\\\这里的代码都是控制DataGrid项中CheckBox的改变。
}这样的话,提示ckb未实例化,也就是说,根本就没找到CheckBox,
请这个怎么处理,我怎么才能找到页眉的CheckBox????

解决方案 »

  1.   

    这个你在datagrid的itemdatabound中
    if (e.Item.ItemType == ListItemType.Header )
    ....就可以了。
      

  2.   

    在客户端响应比较好
    用JavaScript实现
      

  3.   

    用JavaScript实现??怎么实现,我不怎么会,最好是哪位大哥给段代码看看啊不过在后台代码我已经实现了,不过最好是用好的办法,
      

  4.   

    呵呵,数据项的起始索引是0,不表示column的索引就是0-1啊。^_^column有专门的地方存放。checkbox chk = (checkbox)this.datagrid.columns[那个checkbox所在的列索引].findcontrol(checkbox的id);
      

  5.   

    checkbox chk = (checkbox)this.datagrid.columns[那个checkbox所在的列索引].findcontrol(checkbox的id);这样可以吗??
    checkbox chk = (checkbox)this.datagrid.columns[那个checkbox所在的列索引].-----这个点后面根本就没有---findcontrol啊
      

  6.   

    按 athossmth(athos)方法可以取得页眉的控件,不过总感觉有点变态,居然从DataGrid中正常访问不到。private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if ( e.Item.ItemType == ListItemType.Header )
    {
    checkAll = (CheckBox)e.Item.FindControl("allCheck");
    }
    }
      

  7.   

    按 athossmth(athos)方法可以取得页眉的控件,不过总感觉有点变态,居然从DataGrid中正常访问不到。private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if ( e.Item.ItemType == ListItemType.Header )
    {
    checkAll = (CheckBox)e.Item.FindControl("allCheck");
    }
    }