PDA

View Full Version : سوال: انتخاب یکجای تمام checkbox های داخل یک ستون از grid بدونه postback خوردن صفحه



darkwish
یک شنبه 10 اردیبهشت 1391, 19:11 عصر
سلام دوستان
من یه گرید دارم که به ازای هر سطرش یک چک باکس گذاشتم. حالا می خوام توی هدر این ستون یک چک باکس باشه که با انتخاب اون بدون postback خوردن صفحه همه چک باکس ها انتخاب بشن و اگه دوباره کلید کرد مجددا همشون به حالت عدم انتخاب برگردند.
پایین صفحه هم یه باتن دارم که می خوام اگه کاربر روی اون کلیک کرد اطلاعات مربوط به تمام ردیف هایی که انتخاب شده اند در یک تیبل بریزم
اگه ممکنه کمک کنید . لطفا با کد راهنمایی کنید ممنون می شم. c#

ahmad156
یک شنبه 10 اردیبهشت 1391, 19:27 عصر
<asp:TemplateField HeaderText="Roles">
<HeaderTemplate>
<asp:CheckBox ID="chkAll" runat="server" onclick="javascript:SelectAllCheckboxesSpecific(this);" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkDownload" runat="server" onclick="javascript:HighlightRow(this);" />
</ItemTemplate>
</asp:TemplateField>

این هم کد جاوااسکریپت

function SelectAllCheckboxes(spanChk)
{
var IsChecked = spanChk.checked;
var Chk = spanChk;
Parent = Chk.form.elements;
for(i=0;i<Parent.length;i++)
{
if(Parent[i].type=="checkbox" && Parent[i].id!=Chk.id)
{
if(Parent[i].checked!= IsChecked)
Parent[i].click();
}
}
}
function SelectAllCheckboxesSpecific(spanChk)
{
var IsChecked = spanChk.checked;
var Chk = spanChk;
Parent = document.getElementById('GVRecording');
var items = Parent.getElementsByTagName('input');
for(i=0;i<items.length;i++)
{
if(items[i].id != Chk && items[i].type=="checkbox")
{
if(items[i].checked!= IsChecked)
{
items[i].click();
}
}
}
}

function SelectAllCheckboxesMoreSpecific(spanChk)
{
var IsChecked = spanChk.checked;
var Chk = spanChk;
Parent = document.getElementById('GVRecording');
for(i=0;i< Parent.rows.length;i++)
{
var tr = Parent.rows[i];
//var td = tr.childNodes[0];
var td = tr.firstChild;
var item = td.firstChild;
if(item.id != Chk && item.type=="checkbox")
{
if(item.checked!= IsChecked)
{
item.click();
}
}
}
}


function HighlightRow(chkB)
{
var IsChecked = chkB.checked;
if(IsChecked)
{
chkB.parentElement.parentElement.style.backgroundC olor='yellow'; // grdEmployees.SelectedItemStyle.BackColor
chkB.parentElement.parentElement.style.color='whit e'; // grdEmployees.SelectedItemStyle.ForeColor
}
else
{
chkB.parentElement.parentElement.style.backgroundC olor='white'; //grdEmployees.ItemStyle.BackColor
chkB.parentElement.parentElement.style.color='blac k'; //grdEmployees.ItemStyle.ForeColor
}
}

darkwish
یک شنبه 10 اردیبهشت 1391, 20:17 عصر
بابت پاسخی که دادید ممنون ولی برای وقتی که می خواد کل چک باکس ها رو انتخاب کنه کار نمی کنه و فقط وقتی یکی رو انتخاب می کنم پس زمینه رو زرد می کنه
اگه می شه کمک کنید

فک کنم باید این دو خط رو تغییر بدم اگه می شه بگید باید چیکار کنم
Parent = document.getElementById('GVRecording'); var items = Parent.getElementsByTagName('input');



gvrecording و input چیه؟

ahmad156
یک شنبه 10 اردیبهشت 1391, 20:20 عصر
id گریدویو رو جایگزین GVRecording کردین؟
کلمه this توی تابع از هم جدا افتاده!!

<asp:CheckBox ID="chkAll" runat="server" onclick="javascript<b></b>:SelectAllCheckboxesSpecific(th is);" />

darkwish
یک شنبه 10 اردیبهشت 1391, 20:25 عصر
بله هر دو کار رو انجام دادم ولی باز هم نشد باید چیکار کنم؟
جای input باید چی قرار بدم؟var items = Parent.getElementsByTagName('input');

hamid_shrk
یک شنبه 10 اردیبهشت 1391, 21:16 عصر
دوست عزیز من تست کردم این خط ها رو ویرایش کنید (فکر میکنم مشکل از ادیتور این سایت باشه)


<HeaderTemplate>
<asp:CheckBox ID="chkAll" runat="server" onclick="SelectAllCheckboxesSpecific(this);" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkDownload" runat="server" onclick="HighlightRow(this);" />
</ItemTemplate>

raziee
یک شنبه 10 اردیبهشت 1391, 22:15 عصر
سلام دوستان
من یه گرید دارم که به ازای هر سطرش یک چک باکس گذاشتم. حالا می خوام توی هدر این ستون یک چک باکس باشه که با انتخاب اون بدون postback خوردن صفحه همه چک باکس ها انتخاب بشن و اگه دوباره کلید کرد مجددا همشون به حالت عدم انتخاب برگردند.
پایین صفحه هم یه باتن دارم که می خوام اگه کاربر روی اون کلیک کرد اطلاعات مربوط به تمام ردیف هایی که انتخاب شده اند در یک تیبل بریزم
اگه ممکنه کمک کنید . لطفا با کد راهنمایی کنید ممنون می شم. C#‎

درود
انجام این کار ها باید در سمت کلاینت انجام بشه و نه در سمت سرور ، از این رو زبان C#‎ که نوشتید اصلا جایگاهی نداره و باید بوسیله ی زبان های Client Side مثل JavaScript انجام بدید.
از اونجایی که jquery کد نویسی رو بسیار راحت کرده تابعی برای این کار نوشتم.

$("table.mygrid thead tr th:first input:checkbox").live('click', function () {
var checked = $(this).attr("checked");
$("table.mygrid tbody tr").map(function () {
$(this).find("td:first input:checkbox").attr("checked", checked);
});
});
تابع فوق مشخص میکنه که اگر CheckBox که در اولین سطر هدر یک جدول (جدول مربوطه دارای کلاس mygrid هست) کلیک شد(تغییر وضعیت داد) تمام سطرهای اون جدول (البته در tbody) خونده بشه و ...
پیشنهاد میکنم به عنوان یک برنامه نویس وب حتما اطلاعات خودتون رو در مورد برنامه نویسی سمت کلاینت بیشتر کنید.