دسته بندی ها
15:23 1399/04/29

کنترل مقدار CheckBox در یک Gridview در Asp.net WebForm

مشخصات سوال کننده :
کاربر : Kpa91     امتیاز کاربر : 12     رتبه کاربر : 59
دسته بندی : Asp.net Web Form

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2915
پاسخ دهنده : fateme 19:53 1399/04/29

وقتی شما روی دکمه کلیک می کنید متد btnshow_Click در سمت سرور اجرا می شود. در واقع یک درخواست به سمت سرور ارسال شده و پاسخ درخواست شما از سمت سرور برگشت داده می شود. این ارسال درخواست به سمت سرور و دریافت پاسخ از سمت سرور به معنی یک Refresh می باشد و باعث میشه که CheckBox های شما مجدد رفرش بشه.

کلا سعی کنید برای کار چک باکس در وب از جی کوئری استفاده کنید چون مطمئن باشید در غیر این صورت با مشکلات عدیده ای روبرو میشید.

به این پاسخ امتیاز بدهید    0
امتیاز: 1617 رتبه: 2
پاسخ دهنده : Kpa91 23:56 1399/04/29

سپاس از راهنماییتان آیا راهی غیر از کد نویسی مثل تنظیمات یک خاصیت در صفحه ،برای عدم رفرش صفحه وجود دارد اگر نه ایا شما نمونه سورسی برای کنترل چک باکسها و نگهداری وضعیت آنها دارید؟

به این پاسخ امتیاز بدهید    0
امتیاز: 12 رتبه: 59
پاسخ دهنده : mohammad-i 12:30 1399/04/30

در کل آیتم هایی که خاصیت runat="server" دارند(مثل button ها)، عمل postback رو انجام میدن که این عمل باعث رفرش صفحه میشه.

شما باید از جاواسکریپت، جی کوئری و امثال اون استفاده کنید که عملیات رو سمت کلاینت انجام میدن.

روش دوم هم اینه که وضعیت چک باکس ها رو در کنار بقیه فیلدهای گریدویو، توی دیتابیس ذخیره کنید و با هر بار رفرش صفحه وضعیت فراخوانی بشه .

به این پاسخ امتیاز بدهید    1
امتیاز: 260 رتبه: 7
پاسخ دهنده : Kpa91 13:22 1399/04/30

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

به این پاسخ امتیاز بدهید    0
امتیاز: 12 رتبه: 59
پاسخ دهنده : mohammad-i 16:21 1399/04/30

از روش زیر میتونید استفاده کنید(اگر هدف شما فقط نمایش چک باکس های تیک خورده شده است):

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 چک باکش رو نمایش بده.

ویرایش شده در دوشنبه 30 تیر 1399 ساعت 16:24:34
به این پاسخ امتیاز بدهید    1
امتیاز: 260 رتبه: 7
پاسخ دهنده : Kpa91 23:42 1399/04/30

سپاسگذارم  حتما تست می کنم نتیجه رو اعلان می کنم

به این پاسخ امتیاز بدهید    0
امتیاز: 12 رتبه: 59
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود