عبدالعزيز برغش نشر 19 يوليو 2016 أرسل تقرير نشر 19 يوليو 2016 السلام عليكم لدي زر ومتغير Variable وأريد جعل الزر يزيد قيمة المتغير بمقدار 1 في كل مرة يم الضغط عليه أعتقد أن الأمر قد يكون سهل لكن لدي مشكلة حيث أن الزر يقوم بزيادة قيمة المتغير مرة واحدة فقط هذا هو الكود الذي استخدمته int posts_num = 1; protected void loadMore_btn_ServerClick(object sender, EventArgs e) { posts_num ++; counter_lbl.Text = posts_num.ToString(); } لكن الزر يعمل لمرة واحدة فقط أي يعرض 2 ثم يتوقف ولا يزيد عن ذلك كما هو المتوقع هل من إقتراحات؟ اقتباس
2 حسام برهان نشر 19 يوليو 2016 أرسل تقرير نشر 19 يوليو 2016 (معدل) إذًا أنت تعمل على ASP.NET Web Forms علمت ذلك لأنّك أخبرتني أنّك تستخدم UpdatePanel. على العموم المشكلة في ذلك أنّ تطبيقات الويب عمومًا لا تحافظ على الحالة الحاليّة لها Stateless. فأي متغيّر تعدّل قيمته عند طلب Request معيّن، سيزول تأثير هذا التعديل عندما تنتهي معالجة الطلب. وهكذا فالعدد الثابت الذي يعرضه برنامجك (القيمة 2) منطقية تمامًا. احدى الحلول المتاحة لهذه المشكلة تكمن في استخدام طريقة تحافظ فيها على حالة التطبيق بين الطلبات المتتالية (قيمة المتغيّر posts_num على وجه التحديد). الطريقة التي اخترتها لك هي استخدام الخاصيّة Session من الصنف Page والتي تحافظ على قيمة المتغيّر posts_num. انظر إلى التعديل التالي الذي يجب أن تنجزه على شيفرتك: protected void loadMore_btn_ServerClick(object sender, EventArgs e) { int posts_num; if (Session["CurrentPostValue"] == null) { posts_num = 1; } else { posts_num = (int)Session["CurrentPostValue"]; } counter_lbl.Text = posts_num.ToString(); posts_num++; Session["CurrentPostValue"] = posts_num; } لاحظ أنّ المتغيّر posts_num أصبح محليًّا local variable ولم يعد موجودًا على مستوى الصنف. تم التعديل في 19 يوليو 2016 بواسطة حسام برهان اقتباس
0 حسام برهان نشر 19 يوليو 2016 أرسل تقرير نشر 19 يوليو 2016 انسخ كامل الملف الذي يحوي هذه الشيفرة، واعرضه من فضلك. اقتباس
0 عبدالعزيز برغش نشر 19 يوليو 2016 الكاتب أرسل تقرير نشر 19 يوليو 2016 (معدل) بتاريخ 9 دقائق مضت قال حسام برهان: انسخ كامل الملف الذي يحوي هذه الشيفرة، واعرضه من فضلك. الملف كبير يمكنني أن أعرض على حضرتك الجزء الخاص بهذا الزر بالإضافة إلى Class الصفحة أو إذا كنت متأكدا يمكن أن أعرض الملف الكامل لكنه كبير *ملحوظة أيضا الزر وال label موجودان داخل updatepanel كود الجزء الخاص بالزر using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } int posts_num = 1; protected void loadMore_btn_ServerClick(object sender, EventArgs e) { posts_num ++; counter_lbl.Text = posts_num.ToString(); } } إذا ما كان الكود الكامل للصفحة مازال ضروريا فقط أخبرني بذلك تم التعديل في 19 يوليو 2016 بواسطة zezo mohamed اقتباس
0 Khalil Saleem نشر 4 أغسطس 2016 أرسل تقرير نشر 4 أغسطس 2016 ضع إجابة المهندس حسام في حدث النقر على الزر، ويجب أن يعمل كل شيء بكفاءة اقتباس
السؤال
عبدالعزيز برغش
السلام عليكم
لدي زر ومتغير Variable وأريد جعل الزر يزيد قيمة المتغير بمقدار 1 في كل مرة يم الضغط عليه
أعتقد أن الأمر قد يكون سهل لكن لدي مشكلة حيث أن الزر يقوم بزيادة قيمة المتغير مرة واحدة فقط
هذا هو الكود الذي استخدمته
لكن الزر يعمل لمرة واحدة فقط أي يعرض 2 ثم يتوقف ولا يزيد عن ذلك كما هو المتوقع
هل من إقتراحات؟
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.