如题!高手请指教!!例如:
<HeaderTemplate>
<asp:CheckBox ID="CheckAll" OnCheckedChanged="ChkAll" AutoPostBack="True" Runat="server"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chk" Runat="server" Text="ss"></asp:CheckBox>
</ItemTemplate>这样的代码应该如何实现这个功能呢?

解决方案 »

  1.   

    你可以给checkbox设置AutoPostBack="True"
    然后设置它的事件onCheckedChanged拌定到一个事件上。
    在那个事件上判断。如果checked=true
    那么循环datagrid里的item,并取得他们的checkbox。然后都设置为true
    反之亦然。以下是关于在datagrid中如何触发其中的控件。这里是关于你的这个onCheckedChanged事件的触发http://www.cnblogs.com/lovecherry/archive/2005/04/04/131787.html参考。。这样你因该可以找到思路了吧。恩!
      

  2.   

    思路早有,不过,就是这个onCheckedChanged的事件不会写,(因小弟刚学ASP。NET(C#))。如果可的话请帮我写写这个onCheckedChanged事件好吗?
      

  3.   

    protected void cbChAll_CheckedChanged(object sender, System.EventArgs e)
    {
    //改变列的选定,实现全选或全不选。
    CheckBox cbCheckAll = (CheckBox)sender;
    CheckBox chkExport ;
    if( cbCheckAll.Checked)
    {
    foreach(DataGridItem oDataGridItem in MyDataGrid.Items)
    {
    chkExport = (CheckBox)oDataGridItem.FindControl("chk");
    chkExport.Checked = true;
    }
    }
    else
    {
    foreach(DataGridItem oDataGridItem in MyDataGrid.Items)
    {
    chkExport = (CheckBox)oDataGridItem.FindControl("chk");
    chkExport.Checked = false;
    }
    }
    }
      

  4.   

    这是我写的js
    <script language="javascript" type="text/javascript">
    <!--
    <!-- 全选 -->
    //chakVal 是否被选中
    //idVal   checkbox的id 或name
    //Prefix  checkbox的id或name前缀
    function selectall(chkVal,idVal,Prefix){
    //window.alert(idVal +'|'+Prefix);
      var frm = document.forms[0];
      for (i=0;i<frm.elements.length;i++)
      {
        if (frm.elements[i].id.indexOf(idVal)!=-1 || frm.elements[i].id.indexOf(Prefix) !=-1) 
        {
    frm.elements[i].checked = chkVal;
        }
      }
    }<!-- 改变选择列的颜色 -->
    //chbox 被选中的checkbox
    //parentid 父checkbox的id
    //Prefix checkbox的id或name前缀
    function changechecked(chbox,parentid,Prefix){
     var chb =chbox.checked;
     var frm = document.forms[0];
     var parent = new Object();
     for(i=0;i<frm.elements.length;i++)
     {
    if(frm.elements[i].type == "checkbox")
    {
    if(frm.elements[i].id.indexOf(parentid)!=-1)
    {
    parent = frm.elements[i];
    }
    }
     }
     
     if (chb) {
         chb.checked = true;
         if(isallselected(Prefix)){
          parent.checked = true;
         }
        }else{
         parent.checked = false;
         chb.checked = false;
        }
    }<!-- 是否有选中? -->
    function isselected(){
      var f = document.forms[0];
      for (i=0;i<f.elements.length;i++)
        if ( (f.elements[i].checked)) return true;
      return false;
    }<!--是否全部选中? -->
    //Prefix checkbox的id或name前缀
    function isallselected(Prefix){
     var selectcount = 0;
     var allcount=0;
     var frm = document.forms[0];
     for(i=0;i<frm.elements.length;i++){
    if(frm.elements[i].type == "checkbox")
    {
     if (frm.elements[i].checked && 
    ((frm.elements[i].name.indexOf(Prefix) !=-1)||(frm.elements[i].id.indexOf(Prefix) !=-1)) )
     {
     selectcount = selectcount + 1;
      }
        }
     }
     for(i=0;i<frm.elements.length-1;i++){
      if ((frm.elements[i].name.indexOf(Prefix) !=-1)||(frm.elements[i].id.indexOf(Prefix) !=-1)){
       allcount = allcount+1;
      }
     }
     if(selectcount==(allcount-1))
      return true;
     else
      return false;
    }
    function sendallcode()
    {
    var frm = document.forms[0];
    var idVal = new String();
    var selectidlist = new String();
    var SelectCode = new Object();
    for(i =0;i<frm.elements.length;i++)
    {
    if(frm.elements[i].type == "checkbox")
    {
    if(frm.elements[i].id.indexOf("Select") !=-1)
    {
    idVal = frm.elements[i].id;
    idVal = idVal.substring(idVal.indexOf("Select")+6,idVal.length);
    if(frm.elements[i].checked)
    {
    selectidlist +=idVal+"_1"+",";
    }
    else
    {
    selectidlist +=idVal+"_0"+",";
    }

    }
    }
    if(frm.elements[i].name.indexOf("codeselectlist") !=-1)
    {
    SelectCode = frm.elements[i];
    }
    }
    SelectCode.value = selectidlist;
    //frm.all.codeselectlist.value =SelectCode.value ;
    //window.confirm(frm.all.codeselectlist.value);
    }

    //--> 
    </script>
      

  5.   

    那个文章你还看不懂。无语。好吧。我给你代码。
    前台这样
    <HeaderTemplate>
    <asp:CheckBox ID="CheckAll" OnCheckedChanged="ChkAll" AutoPostBack="True" Runat="server"></asp:CheckBox>
    </HeaderTemplate>
    <ItemTemplate>
    <asp:CheckBox ID="chk" Runat="server" Text="ss" OnCheckedChanged="chk_CheckedChanged"></asp:CheckBox>
    </ItemTemplate>然后在后台写    Protected Sub chk_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)
            If CType(sender, CheckBox).Checked = True Then
                Response.Write("<script>alert('您选中了这一列,,可以添加数据了!');</script>")
            End If
        End Sub
    注意要Protected关键字
      

  6.   

    checkbox,没必要用js可以减少页面刷新
      

  7.   

    用checkbox没必要,用js可以减少页面刷新
      

  8.   

    上面VB。NET代码翻译C#如下:
    protected void chk_CheckedChanged(object sender, System.EventArgs e) 

     if (((CheckBox)(sender)).Checked == true) { 
       Response.Write("<script>alert('您选中了这一列,,可以添加数据了!');</script>"); 
     } 
    }JS线少刷新。要是客户端不支持JS呢??呵呵
      

  9.   

    hackate是不是误解搂主的意思了,他是要头上选中则一列选中
    我觉得还是javascript好一些
      

  10.   

    有个简单问题呀!!???
    在ASPX的页面中,已经声明了用C#了,那么如何插入javascript的代码呀??
      

  11.   

    如:Response.write("<script>window.alert('javascript代码');</script>")Button1.Attributes.add("onclick","javascript代码")随你选择了.