R – How Use Item in Header Of Repeater in ASP.net with C#2008

asp.netdatarepeater

I Use a CheckBox in Header of Column and that coulmn is Container Cehckboxes too .

I want to Use a chechBox in header in Repeater , and when This Control is Checked ,checkboxes of rows is checked .

How do I do This?

Best Answer

The best answer would involve client-side javascript. You would get the id of the controls using controlName.clientID and have it coded into the javascript..

But here is the naive Dotnet only answer:

Given the Repeater:

    <asp:Repeater ID="Repeater1" runat="server">
    <HeaderTemplate>
       <div> <asp:CheckBox ID="CheckBox1" runat="server" OnCheckedChanged="SetAllChecks" AutoPostBack="true" /></div>
    <hr />
    </HeaderTemplate>
    <ItemTemplate>
       <div> <asp:CheckBox ID="CheckBox2" Checked='<%# Container.DataItem("isChecked") %>' runat="server" /></div>
    </ItemTemplate>
    </asp:Repeater>

And the codebehind:

Imports System.Data  
Imports System.Collections

Partial Class _Default  
Inherits System.Web.UI.Page  

Public Sub SetAllChecks(ByVal sender As Object, ByVal e As System.EventArgs)  
    Dim amIChecked As CheckBox = CType(sender, CheckBox)  

    Dim rowCt As Integer = Repeater1.Items.Count  
    Dim ridx As Integer = 0  
    For ridx = 0 To rowCt - 1  
        Dim cbox As CheckBox = CType(Repeater1.Items(ridx).FindControl("CheckBox2"), CheckBox)  
        cbox.Checked = amIChecked.Checked  
    Next  

End Sub  

Public Sub Repeater1_OnItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater1.ItemDataBound

End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not Page.IsPostBack Then
        Dim dt As New DataTable()
        dt.Columns.Add(New DataColumn("isChecked"))
        Dim tmprow As DataRow = dt.NewRow()
        tmprow("isChecked") = True
        dt.Rows.Add(tmprow)
        tmprow = dt.NewRow()
        tmprow("isChecked") = False
        dt.Rows.Add(tmprow)
        tmprow = dt.NewRow()
        tmprow("isChecked") = False
        dt.Rows.Add(tmprow)
        tmprow = dt.NewRow()
        tmprow("isChecked") = False
        dt.Rows.Add(tmprow)
        tmprow = dt.NewRow()
        tmprow("isChecked") = False
        dt.Rows.Add(tmprow)

        Repeater1.DataSource = dt
        Repeater1.DataBind()

    End If

End Sub

End Class