网页部分<script language="javascript">
<!--
function chkSelectAll_onclick()
{
var i;
var chkAll = event.srcElement;
var obj = document.all.tags("INPUT");
for (i = 0; i < obj.length; i++)
{
if (obj(i).parentElement.title == "Child")
{
obj(i).checked = chkAll.checked;
}
}
}function chk_onclick()
{
var i;
var flag = false;
var sTitle = event.srcElement.parentElement.title;
var chkAll;
var obj = document.all.tags("INPUT");

for (i = 0; i < obj.length; i++)
{
if (obj(i).parentElement.title == "Parent")
{
chkAll = obj(i);
break;
}
} for (i = 0; i < obj.length; i++)
{
if ((obj(i).checked)
&&(obj(i).parentElement.title == "Child"))
{
flag = true;
break;
}
}

chkAll.checked = flag;
}
//-->
</script><asp:datagrid id="mainGrid" runat="server" CssClass="MainGrid" CellPadding="3" AutoGenerateColumns="False">
<ItemStyle CssClass="ItemStyle1"></ItemStyle>
<HeaderStyle CssClass="HeadStyle1"></HeaderStyle>
<Columns>
<asp:TemplateColumn HeaderStyle-Width="30" ItemStyle-Width="30" ItemStyle-HorizontalAlign="Center">
<HeaderTemplate>
<asp:CheckBox ID="chkSelectAll" Runat="server"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chk" Runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderStyle-Width="30" ItemStyle-Width="30" ItemStyle-HorizontalAlign="Center">
<HeaderTemplate>
<%=res.GetString("Sequence")%>
</HeaderTemplate>
<ItemTemplate>
<%#(Container.ItemIndex + 1).ToString("00") + "."%>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>

解决方案 »

  1.   

    在ItemDataBound事件中加入:
    CheckBox chkNode;
    chkNode = (CheckBox)e.Item.FindControl("chk");
    if (chkNode != null)
    {
    chkNode.Attributes["onclick"] = "javascript:return chk_onclick()";
    chkNode.Attributes["title"] = "Child";
    }
    else
    {
    chkNode = (CheckBox)e.Item.FindControl("chkSelectAll");
    if (chkNode != null)
    {
    chkNode.Attributes["onclick"] = "javascript:return chkSelectAll_onclick()";
    chkNode.Attributes["title"] = "Parent";
    }
    }
      

  2.   

    checkbox采用了服务器控件目的是在后端可以控制它
      

  3.   

    我的意思不是前端后端的问题,而是在叶面上可以用一个checkbox控制所有checkbox的选中或不选中
      

  4.   

    <%@ Page Language="vb" EnableViewstate="false"%>
    <script language="VB" runat="server">
    Function CreateDataSource() As ICollection
      Dim dt As New System.Data.DataTable()
      Dim dr As System.Data.DataRow  dt.Columns.Add(New System.Data.DataColumn("IntegerValue", GetType(Int32)))
      dt.Columns.Add(New System.Data.DataColumn("StringValue", GetType(String)))
      dt.Columns.Add(New System.Data.DataColumn("DateTimeValue", GetType(DateTime)))
      dt.Columns.Add(New System.Data.DataColumn("BoolValue", GetType(Boolean)))
      dt.Columns.Add(New System.Data.DataColumn("CurrencyValue", GetType(Double)))  Dim i As Integer
      For i = 0 To 8
          dr = dt.NewRow()      dr(0) = i
          dr(1) = "Item " + i.ToString()
          dr(2) = DateTime.Now
          If (i Mod 2) <> 0 Then
              dr(3) = True
          Else
              dr(3) = False
          End If
          dr(4) = 1.23 *(i + 1)      dt.Rows.Add(dr)
      Next i  Dim dv As New System.Data.DataView(dt)
      Return dv
    End FunctionSub Page_Load(sender As Object, e As EventArgs)
      If Not IsPostBack Then
          CheckBoxList1.DataSource = CreateDataSource()
          CheckBoxList1.DataBind()
      End If
    End Sub
    </script>
    <body>
    <form runat=server>
    <asp:DataGrid id="CheckBoxList1" runat="server" AutoGenerateColumns="False"
    >
    <Columns>
    <asp:TemplateColumn HeaderText="操作">
      <HeaderTemplate>
                <input type=checkbox onclick="Get(this)">
             </HeaderTemplate >
      <ItemTemplate>
        <asp:CheckBox ID="chkExport" Runat="server" />
      </ItemTemplate>
      <EditItemTemplate>
        <asp:CheckBox ID="chkExportON" Runat="server" Enabled="true" />
      </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:BoundColumn DataField="IntegerValue" ReadOnly="True" HeaderText="序号">
    </asp:BoundColumn>
    <asp:TemplateColumn SortExpression="IntegerValue" HeaderText="标题">
    <ItemTemplate>
    <asp:Label Text='<%# Server.HtmlEncode(DataBinder.Eval(Container.DataItem, "StringValue").ToString)%>'
    runat="server"  ID="lblColumn"/>
    </ItemTemplate>
    </asp:TemplateColumn>
       </Columns>
    </asp:DataGrid>
    <br>
    </form>
    <script>
    function Get(x)
    {
    o = document.getElementsByTagName("INPUT")
    for(i=0;i<o.length;i++)
    if(o[i].type && o[i].type=="checkbox")
    {
    o[i].checked=x.checked
    }
    }
    </script>
    </body>
      

  5.   

    chk_onclick()是当选中里面的checkbox则上面的也被选中