La meilleure réponse impliquerait javascript côté client. Vous obtiendrez l'identifiant des contrôles à l'aide controlName.clientID et l'ont codé dans le javascript ..
Mais voici la Dotnet naïve que répondre:
Étant donné le répéteur:
<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>
Et le 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
Une note de peu, parfois il y a un problème avec NamingContainer, il est préférable d'ajouter une chose permanente à la fin de id élément et utiliser $ ('entrée [type = checkbox] [id $ = foo] ') à la place. –
@Mehdi, vous avez absolument raison à ce sujet. Habituellement, la poubelle est ajoutée au début des identifiants. Je vais modifier mon message. –