زر الارتباط تغيير اللون عند إجراء أي حدث Pager للبيانات

StackOverflow https://stackoverflow.com/questions/3500368

  •  29-09-2019
  •  | 
  •  

سؤال

لديّ مرشح أبجدي يتكون من 26 زر رابط تم إنشاؤه ديناميكيًا عند تحديد أي زر ارتباط ، فهو يقوم بتصفية اسم المستخدم على أساس الأبجدية وتغيير لونه إلى Orange لجعله مختلفًا عن LinkButtons الأخرى ، فهو يعمل بشكل جيد ولكن إذا كان هناك المزيد من المستخدمين المرتبطين بأبجدية معينة وعند تطبيق مرشح ، يقوم بتصفية المستخدم على أساس تلك الأبجدية وعرضها في طريقة عرض قائمة عند النقر اللون الافتراضي ولكني أريد الاحتفاظ بذلك المميز حتى وما لم يتم تحديد زر الارتباط الآخر عن الرمز الخاص بي

protected void Page_Init(object sender, EventArgs e)
    {
        // Adding Dynamically linkbuttons for all alphabets(i.e. A-Z)
        for (char asciiValue = 'A'; asciiValue <= 'Z'; asciiValue++)
        {
            LinkButton lbtnCharacter = new LinkButton();
            lbtnCharacter.ID = "lbtnCharacter" + asciiValue;
            divAlphabets.Controls.Add(lbtnCharacter);

            // Setting the properties of dynamically created Linkbutton.
            lbtnCharacter.Text = Convert.ToString(asciiValue);
            lbtnCharacter.CssClass = "firstCharacter";
            lbtnCharacter.ToolTip = "Show Tags starting with '" + Convert.ToString(asciiValue) + "'";
            lbtnCharacter.CommandArgument = Convert.ToString(asciiValue);
            lbtnCharacter.Command += new CommandEventHandler(lbtnCharacter_Command);
        }
    }



// For assigning default color to linkbutton text in page load
        foreach (var ctrl in divAlphabets.Controls)
        {
            if (ctrl is LinkButton)
            ((LinkButton)ctrl).CssClass = "firstCharacter";
        }

void lbtnCharacter_Command(object sender, CommandEventArgs e)
        {
            // Storing the values of pressed alphabet in viewstate.
            ViewState["Selected_Character"] = e.CommandArgument;
            LinkButton lbtnSelected = (LinkButton)divAlphabets.FindControl("lbtnCharacter" + e.CommandArgument);
            lbtnSelected.CssClass = "firstCharacter highlighted";
            txtTagFilter.Text = string.Empty;

            BindTagList();
        }
هل كانت مفيدة؟

المحلول

آمل أن أفهم سؤالك.

أنت تقوم بتعيين عنصر your_character المحدد في معالج الأوامر ثم قم بتعيين فئة الزر لتمييزه. يتم إطلاق هذا فقط عند النقر فوق الزر ، وليس عند الانتقال إلى الصفحة التالية. لماذا لا تفصل هاتين العمليتين. قم بتعيين فئة زر الارتباط على Prerender في حالة تطابق Select_character. وبهذه الطريقة حتى عندما تقوم بصفحة ، سيظل زر الارتباط مميزًا.

أود أيضًا تعيين الشخصية التي اخترتها كمعلمة سلسلة استعلام ، إذا قام شخص ما بنسخه ولصق رابط لصفحتك ، فلن يسلط الضوء على الزر ولن يتم عرض البيانات الصحيحة.

أتمنى أن يساعدك هذا.

تحرير: لم تختبر ما يلي ، لكن ربما سيبدأ الأمر.

void lbtnCharacter_Command(object sender, CommandEventArgs e)
{
    // redirect to self with tag as qs parameter
    Response.Redirect(string.Format("{0}?tag={1}", Request.Url.GetLeftPart(UriPartial.Path), e.CommandArgument));
}

protected void Page_PreRender(object sender, EventArgs e) 
{
    if (Request.QueryString["tag"] != null) {
        LinkButton lbtnSelected = (LinkButton)divAlphabets.FindControl("lbtnCharacter" + Request.QueryString["tag"]);
        lbtnSelected.CssClass = "firstCharacter highlighted";
    }
}

NB ستحتاج أيضًا إلى تغيير قائمة BindTagList لاستخدام سلسلة الاستعلام أيضًا. أفترض أنك تسمي هذا في حدث تحميل الصفحة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top