كيف استخدم عنصر في رأس مكرر في ASP.net مع C # 2008

StackOverflow https://stackoverflow.com/questions/1618333

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا استخدم خانة الاختيار في رأس العمود من وأن coulmn هو Cehckboxes الحاويات أيضا.

وأريد أن استخدم chechBox في رأس في مكرر، وعندما يتم تحديد هذا التحكم، يتم فحص مربعات الصفوف.

وكيف أفعل هذا؟

هل كانت مفيدة؟

المحلول 4

CheckBox Checkall = SendBoxrep.Controls[0].Controls[0].FindControl("Checkall") as CheckBox;

نصائح أخرى

وأفضل إجابة ينطوي جافا سكريبت من جانب العميل. سوف تحصل على معرف التحكم باستخدام controlName.clientID، وأنها مشفرة في جافا سكريبت ..

ولكن هنا هو ساذج DOTNET فقط الجواب:

ونظرا للمكرر:

    <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>

وعلى 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

ونهاية الدرجة

وهذا يمكن تحقيقه بسهولة مع مسج. لنفترض كان لديك الجدول التالي، تم إنشاؤها بواسطة مكرر الخاص بك:

<table>
  <thead>
      <tr>
          <th><input type="checkbox" name="headerchk" id="headerchk" /></th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><input type="checkbox" name="chk1" id="garbage1_added_my_repeater_chk" /></td>
      </tr>
      <tr>
          <td><input type="checkbox" name="chk2" id="garbage2_added_my_repeater_chk" /></td>
      </tr>
      <tr>
          <td><input type="checkbox" name="chk3" id="garbage3_added_my_repeater_chk" /></td>
      </tr>
  </tbody>
</table>

وبعد ذلك يمكنك تعيين معالج الحدث لمربع في رأس التي سوف تبديل كافة خانات أخرى:

$(function() {
    $('#headerchk').change(function() {
        // Toggle all inputs of type checkbox and with ids starting with chk:
        $('input[type=checkbox][id$=chk]').attr('checked', this.checked);
    });
});

وهنا هو C # رمز ذات الصلة من الإجابة بيل:

public void SetAllChecks(object sender, EventArgs e)
{
    CheckBox amIChecked = (CheckBox)sender;
    foreach (RepeaterItem ri in Repeater1.Items)
    {
        CheckBox cbox = (CheckBox)ri.FindControl("CheckBox2");
        cbox.Checked = amIChecked.Checked;
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top