ستونی دارم در gridview از نوع چک باکس که تعدادی از آنها را تیک میزنم وقتی دکمه پایین صفحه را می زنم تا وضعیت تیک آنها رانشان دهد خود به خود همه آنها به مقدار پیش فرض اولشان (false) ریست میشوند هیچ روتینی برای ریست شدنشان ننوشته ام ایا حین کلیک روی دکمه اتفاق خاصی می افتد مثلا صفحه رفرش میشود؟ تمام راه حلهای پیشنهادی سایتها رو هم انجام دادم اما مقادیر چک باکسها ریست میشود و ثابت نمی ماند این هم خلاصه کدهای سمت کلاینت
<asp:GridView ID="Gv1" runat="server" AutoGenerateColumns="False" DataKeyNames="CustCode">
<Columns>
<asp:TemplateField HeaderText="نام و نام خانوادگی">
<EditItemTemplate>
<asp:CheckBox ID="ChkSel" runat="server" Text='<%# Bind("CustName") %>'
Width="150px" TextAlign="Right" />
</EditItemTemplate>
<ItemTemplate>
<asp:CheckBox ID="ChkSel" runat="server" Text='<%# Bind("CustName") %>'
Width="150px" TextAlign="Right" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="CustSelectCode" HeaderText="کد ملک" ItemStyle-Width="50px"
ItemStyle-HorizontalAlign="Left" />
</asp:GridView>
اینم سورس کد دکمه نمایش وضعیت در سمت سرور
Protected Sub btnShow_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnDel.Click
For Each Rg As GridViewRow In Gv1.Rows
Dim Ck As CheckBox = Rg.FindControl("ChkSel")
Rg.Cells(1).Text = IIf(Ck.Checked, "T", "F")
Next
End Sub
در روتین فوق اگر محتویات ستون اول true بود ستون دوم میشود t و در غیر اینصورت میشود F اینکار فقط جنب تست ستون اول را دارد
وقتی شما روی دکمه کلیک می کنید متد btnshow_Click در سمت سرور اجرا می شود. در واقع یک درخواست به سمت سرور ارسال شده و پاسخ درخواست شما از سمت سرور برگشت داده می شود. این ارسال درخواست به سمت سرور و دریافت پاسخ از سمت سرور به معنی یک Refresh می باشد و باعث میشه که CheckBox های شما مجدد رفرش بشه.
کلا سعی کنید برای کار چک باکس در وب از جی کوئری استفاده کنید چون مطمئن باشید در غیر این صورت با مشکلات عدیده ای روبرو میشید.
سپاس از راهنماییتان آیا راهی غیر از کد نویسی مثل تنظیمات یک خاصیت در صفحه ،برای عدم رفرش صفحه وجود دارد اگر نه ایا شما نمونه سورسی برای کنترل چک باکسها و نگهداری وضعیت آنها دارید؟
در کل آیتم هایی که خاصیت runat="server" دارند(مثل button ها)، عمل postback رو انجام میدن که این عمل باعث رفرش صفحه میشه.
شما باید از جاواسکریپت، جی کوئری و امثال اون استفاده کنید که عملیات رو سمت کلاینت انجام میدن.
روش دوم هم اینه که وضعیت چک باکس ها رو در کنار بقیه فیلدهای گریدویو، توی دیتابیس ذخیره کنید و با هر بار رفرش صفحه وضعیت فراخوانی بشه .
ممنون البته امکان ذخیره وضعیت چک باکس نیست چون جزوی از بانک اطلاعاتی نیست فیلد موقتی است جهت انتخابهای چند گانه در گراید ویوو اما اگر راه حلی از طریق اسکریپ نویسی دارید ممنون میشوم بدانم
از روش زیر میتونید استفاده کنید(اگر هدف شما فقط نمایش چک باکس های تیک خورده شده است):
1- ابتدا jquery رو به پروژه اضافه کنید :
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
2- یه html button اضافه کنید:
<input type="button" id="btn" value="test" />
3- کد های jquery رو اضافه کنید:
<script>
$("#btn").click(function () {
var list = [];
$('#<%= Gv1.ClientID %> input[type="checkbox"]').each(function () {
if($(this).is(":checked")){
list.push($(this).attr("id"));
}
});
alert(list)
});
</script>
توضیحات:
-این کد ابتدا آیدی GV1 که گریدویو هست رو میگیره و تمام چک باکس هاش رو پیدا میکنه. بعد میگه به ازای هر چک باکس بررسی کن اگه تیک خورده بود، اون رو توی لیست قرار بده. و در آخر لیست رو نمایش میده
- من در اینجا گفتم آیدی چک باکس رو نمایش بده. ولی شما میتونید بگید text چک باکش رو نمایش بده.
سپاسگذارم حتما تست می کنم نتیجه رو اعلان می کنم
تاریخ :
1398/09/17
- ساعت :
08:57:00 AM
- بازدید :
2078
- پاسخ :
1
|
تاریخ :
1398/09/08
- ساعت :
08:52:00 PM
- بازدید :
4061
- پاسخ :
3
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
602
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1513
- پاسخ :
1
|
تاریخ :
1398/09/05
- ساعت :
11:44:00 PM
- بازدید :
3397
- پاسخ :
2
|
تاریخ :
1402/04/06
- ساعت :
10:28:00 PM
- بازدید :
1336
- پاسخ :
0
|
تاریخ :
1398/08/21
- ساعت :
01:56:00 AM
- بازدید :
3579
- پاسخ :
1
|
تاریخ :
1401/05/14
- ساعت :
07:50:00 PM
- بازدید :
2185
- پاسخ :
1
|
تاریخ :
1399/11/10
- ساعت :
10:01:00 PM
- بازدید :
6871
- پاسخ :
3
|
تاریخ :
1401/08/24
- ساعت :
01:11:00 PM
- بازدید :
1483
- پاسخ :
1
|
تاریخ :
1403/11/02
- ساعت :
08:17:00 PM
- بازدید :
96
- پاسخ :
1
|
تاریخ :
1403/11/03
- ساعت :
07:21:00 PM
- بازدید :
73
- پاسخ :
1
|
تاریخ :
1403/11/16
- ساعت :
09:24:00 PM
- بازدید :
44
- پاسخ :
1
|
تاریخ :
1403/11/17
- ساعت :
05:54:00 PM
- بازدید :
3
- پاسخ :
0
|
تاریخ :
1399/04/09
- ساعت :
08:51:00 PM
- بازدید :
2965
- پاسخ :
1
|
تاریخ :
1399/03/25
- ساعت :
08:58:00 PM
- بازدید :
3679
- پاسخ :
1
|
تاریخ :
1398/08/15
- ساعت :
01:40:00 PM
- بازدید :
3803
- پاسخ :
1
|
تاریخ :
1399/03/12
- ساعت :
04:53:00 PM
- بازدید :
2429
- پاسخ :
1
|
تاریخ :
1403/11/03
- ساعت :
07:34:00 PM
- بازدید :
109
- پاسخ :
1
|
تاریخ :
1399/12/20
- ساعت :
10:32:00 AM
- بازدید :
2526
- پاسخ :
1
|