PDA

View Full Version : check all for grid view



reza_123
جمعه 17 بهمن 1393, 12:41 عصر
سلام
من یه گرید ویو دارم که توی یکی از ستون هاش میخوام یه check box all بذارم که انتخاب کرد تمامی چک باس های اون ستون انتخاب بشه
من این کارو انجام دادم
یه TemplateField با عنوان select گذاشتم
بعد به HeaderTemplate که توش یه چک باکس گذاشتم
بعد یه ItemTemplate که تو اینم یه چک باکس گذاشتم
اینم تیکه کدی که به گرید ویو اضافه شد


<asp:TemplateField HeaderText="select">
<HeaderTemplate>
<asp:CheckBox ID="chkall" runat="server" ClientIDMode="Static"></asp:CheckBox>
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chk" runat="server" ClientIDMode="Static"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>




حالا میخوام با جی کوئری این کارو انجام بدم اینم کدش


<script type="text/javascript">
$(document).ready(function () {
$("#chkall").toggle(function () {
$(":checkbox").attr("checked", "checked");
}, function () {
$(":checkbox").removeAttr("checked");
});
}); </script>


حالا وقتی اجرا میکنم چک باکسی که تو HeaderTemplate گذاشتم مخفی میشه
چه طوری درستش کنم
مرسی

fakhravari
جمعه 17 بهمن 1393, 15:23 عصر
ClientIDMode نیاز نیست

anvar
جمعه 17 بهمن 1393, 16:58 عصر
راه بهترش اینه

در هید گرید یه چک باکس از نوع اچ تی ام ال بذار (نیازی به کنترل های سمت سرور نیست - چون پردازش اینها در سمت کلاینت صورت می گیره)

در ایتم تیمپلیت هم یه چکس معمولی مقل بالا بذار و یک کلاس بهش بده (این کلاس در بین تمامی چک باکس های ستون مشترک میشه)

حالا با فراض اینکه ID چک باکس هیدر selectall باشه و کلاس چک باکس ایتم تیمپلیت هم chkrow باشه -

کد جی کوئری بصورت زیر میشه

$('#selectall').click(function (event) {
if (this.checked) {
$('.chkrow').each(function () {
this.checked = true;
});
}
else {
$('.chkrow').each(function () {
this.checked = false;
});
}
});

reza_123
شنبه 18 بهمن 1393, 09:54 صبح
خوب اگه ClientIDMode رو مقدار static ندم که هر دفعه ای دی هاشون عوض میشه
الان وقتی اجرا میکنم تو اولین کلیکی که میکنم همه انتخاب میشن ولی کلیک های بعدی دیگه همه انتخاب نمیشن