كيف استخدم عنصر في رأس مكرر في ASP.net مع C # 2008
-
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;
}
}
لا تنتمي إلى StackOverflow