我将
-----------------------------------------
<asp:TemplateColumn HeaderText="当前状态">
  <ItemTemplate>
  <asp:LinkButton ID="btn_State" CommandName="btn_State" CommandArgument='<%# Eval("DetailID") %>'
                                                        runat="server" Text='<%# Convert.ToInt32(Eval("State")) == 0 ? "当前无效" : "当前有效"%>' />
  </ItemTemplate>
</asp:TemplateColumn>
-------------------------
改成
------------------------
<asp:TemplateColumn HeaderText="当前状态">
  <ItemTemplate>
  <asp:CheckBox ID="ck_State" AutoPostBack="true" Checked='<%# Convert.ToInt32(Eval("State")) == 0 ? "false" : "true"%>' runat="server" />                                                    
  </ItemTemplate>
</asp:TemplateColumn>
-----------------------------
请问我要怎么给ck_State添加像CommandName="btn_State"这样的事件
好让我在后台编写代码谢谢

解决方案 »

  1.   

    protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
    {
       }毕竟是不同的控件 ,
      

  2.   

    前台先注册 OnCheckedChanged="ck_State_CheckedChanged"后台写protected void ck_State_CheckedChanged(object sender, EventArgs e)
    {
    }
      

  3.   

    aspx:
    <asp:CheckBox id=ck_Staterunat="server" OnCheckedChanged="AllDisply" Checked='<%# Convert.ToInt32(Eval("State")) == 0 ? "false" : "true"%>'  AutoPostBack="True"></asp:CheckBox>cs:
    protected void AllDisply( object sender, System.EventArgs e )
    {......}
      

  4.   

    <asp:CheckBox ID="ck_State" onclick="javascript: this.nextSibling.click();"  Checked='false' runat="server" /><asp:Button CommandName="aaa"  ID="btn1" runat="server"/>
      

  5.   

    <asp:CheckBox ID="ck_State" onclick="javascript: this.nextSibling.click();"  Checked='false' runat="server" /><asp:Button CommandName="aaa"  ID="btn1" style="display:none" runat="server"/>
      

  6.   

    给DataGrid添加ItemCommand事件之后
    然后在事件中写:
    private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
       if(e.CommandName == "btn_State")
       {
          ...
       }                
    }
      

  7.   

    各位楼上的也就是说
    CheckBox不可以在ItemCommand中执行
    而要自己写一个ck_State_CheckedChanged因为我绑定在DataGrid那我怎么知道我点击的是哪一个CheckBox呢
    CheckBox没有value属性 我用什么来存ID呢
    用Text的话又会看到
    有没有像Button一样的 CommandArgument
      

  8.   

    因为我绑定在DataGrid那我怎么知道我点击的是哪一个CheckBox呢----------------------------------
    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if (e.Item.ItemType == ListItemType.Item ||
    e.Item.ItemType == ListItemType.AlternatingItem) 

    CheckBox cb1 = e.Item.FindControl().....
                                        // 保存任意值
    cb1.Attributes.Add("id",e.Item.ItemIndex);
    ......
      

  9.   

    dg_ParkGratis_ItemDataBound
    添加cb1.Attributes.Add("IndexID", e.Item.ItemIndex);那么前台得到值为:ck.parentNode.getAttribute('IndexID')那我的后台
    btn_ParkTicketGratis_Click
    后台如何得到这个值
    dg_GratisOrder.Items[ck.??];谢谢
      

  10.   

    btn_ParkTicketGratis_Click(sender,...
    {
          string sId = ( (CheckBox)sender).Attributes["IndexID"].value}
      

  11.   

    在后台FindControl应该就可以了, 貌似老问题
      

  12.   

    aspx:
    <asp:CheckBox id=ck_Staterunat="server" OnCheckedChanged="AllDisply" Checked='<%# Convert.ToInt32(Eval("State")) == 0 ? "false" : "true"%>'  AutoPostBack="True"></asp:CheckBox>cs:
    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if (e.Item.ItemType == ListItemType.Item ||
    e.Item.ItemType == ListItemType.AlternatingItem) 

    CheckBox cb1 = e.Item.FindControl().....
                                        // 保存任意值
    cb1.Attributes.Add("rowid",e.Item.ItemIndex);
    .....// 后台按钮事件获得datagrid的rowid
    protected void AllDisply( object sender, System.EventArgs e )
    {
          checkbox cb = sender as checkbox;
          string rowid = cb.attributes["rowid"].value;
          ......
    }