自定义了个datagrid,其中有一列CheckBox,当我钩选某个CheckBox的时候如何在事件中或得这个CheckBox在datagrid中的行号呢?

解决方案 »

  1.   

    <%# (DataGrid1.PageSize * DataGrid1.CurrentPageIndex)+Container.ItemIndex +1 %>
      

  2.   

    http://blog.csdn.net/lxs5i5j/archive/2007/01/29/1496662.aspx这是选择记录并输出到EXCEL
      

  3.   

    ItemCommand事件里做就行
    if(((CheckBox)e.Item.FindControl("CheckBoxid")).Checked)
    {
        (e.Item.ItemIndex + 1 )就是这个行数
    }
      

  4.   

    但要设定CheckBox的CommandName属性名称
    ItemCommand事件里判断e.CommandNameif(e.CommandName == "你设定的值")
    {
       if(((CheckBox)e.Item.FindControl("CheckBoxid")).Checked)
       {
           行数 = e.Item.ItemIndex + 1;
       }
    }
      

  5.   

    但是ItemCommand好像只响应Button的事件,不响应CheckBox的事件哦。
      

  6.   

    databound里面,先定义checkbox类型
    然后把checkbox的值赋给一个变量,进行操作
    datagrid是不会相应checkbox的事件的
      

  7.   

    但是ItemCommand好像只响应Button的事件,不响应CheckBox的事件哦。
    ______________________________________________________________
    哦,的确是这样,忘了,哈哈。这样加个事件就OK了
    <asp:TemplateColumn>
    <ItemTemplate>
    <asp:CheckBox id="c1" runat="server" AutoPostBack="True" OnCheckedChanged="aaa"></asp:CheckBox>
    </ItemTemplate>
    </asp:TemplateColumn>后台写个public的方法public void aaa(object sender,EventArgs e)
    在这里循环判断dataGird里的控件就行了
      

  8.   

    To:Yzw_2006
    但应该以什么条件作判断呢?这样的话这一列中每个CheckBox的id都是"c1"的啊。
      

  9.   

    public void aaa(object sender,EventArgs e)
    {
    for(int i=0;i<DataGrid1.Items.Count;i++)
    {
    if(((CheckBox)DataGrid1.Items[i].FindControl("c1")).Checked)
    {
    Page.RegisterStartupScript("aaa","<script>alert('" + (i+1) + "');</script>");
    }
    }
    }这里的i+1就是行号。如果有多个选择的话,存到是数组里吧。呵呵
      

  10.   

    public void aaa(object sender,EventArgs e)
    {
    if(((CheckBox)sender).Checked)
    {
    string strtemp = ((CheckBox)sender).ClientID.ToString();
    int end = ((CheckBox)sender).ClientID.ToString().LastIndexOf("_");
    int star = ((CheckBox)sender).ClientID.ToString().IndexOf("_ctl");
    Page.RegisterStartupScript("aaa","<script>alert('" + strtemp.Substring((star+4),(end-(star+4))) + "');</script>");
    }
    }事件里这么写也OK了,呵呵。