Кнопка ссылки Изменение цвета, когда происходит какие-либо события Pager Data Pager

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

  •  29-09-2019
  •  | 
  •  

Вопрос

У меня есть алфавитный фильтр состоит из 26 динамически созданных кнопок ссылки при выборе любой кнопки ссылки, она фильтрует имя пользователя на основе алфавита, и меняет его цвет в оранжевый, чтобы сделать его отличным от других линкбуттонов, он работает нормально, но если есть Больше количества пользователей, связанного с определенным алфавитом, и на применении фильтра, он фильтрует пользователь на основе этого алфавита и показывает их в представлении списка, нажав кнопку Pager Data Nexer или любой другой номер страницы. Кнопка ссылки меняет свой цвет цвет по умолчанию, но я хочу сохранить это выделено до тех пор, пока и не выбран другая кнопка ссылки, мой код

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();
        }
Это было полезно?

Решение

Я надеюсь, что я понял ваш вопрос.

Вы устанавливаете свой элемент выбранного_чарактера в обработчике команд, а затем устанавливаете класс кнопки, чтобы выделить его. Это запускается только тогда, когда кнопка нажимается, а не при переходе на следующую страницу. Почему бы не отделить эти две операции. Установите класс кнопки Link на Prerender, если соответствует Selected_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