• 0

كيف أجعل زر يزيد قيمة المتغير في كل مرة يتم الضغط عليه في c#؟

السلام عليكم 
لدي زر ومتغير 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

إذًا أنت تعمل على 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 ولم يعد موجودًا على مستوى الصنف.

تمّ تعديل بواسطة حسام برهان

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

انسخ كامل الملف الذي يحوي هذه الشيفرة، واعرضه من فضلك.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0
بتاريخ 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();
    }
}

إذا ما كان الكود الكامل للصفحة مازال ضروريا فقط أخبرني بذلك 

تمّ تعديل بواسطة zezo mohamed

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

ضع إجابة المهندس حسام في حدث النقر على الزر، ويجب أن يعمل كل شيء بكفاءة

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن