Предыдущий item.text из выпадающего списка - PullRequest
4 голосов
/ 15 ноября 2011

Я использую MS VS 2010 и работаю над сайтом ASP.NET C #. Я застрял на чем-то, что, на мой взгляд, может быть довольно простым, а может и нет.

Допустим, у меня есть выпадающий список.

DropDownList ddl = new DropDownList();
ddl.ID = "d355";
dynamicPanel.Controls.Add(ddl);

ListItem lstItem1 = new ListItem();
lstItem1.Text = "1";
ListItem lstItem2 = new ListItem();
lstItem2.Text = "2";

ddl.Items.Add(lstItem1);
ddl.Items.Add(lstItem2);
ddl.SelectedIndexChanged += new EventHandler(this.ddl_SelectedIndexChanged);

Так как мы программно создали наш выпадающий список, нам нужно также создать наш собственный обработчик событий, который мы привязали к нему.

protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
    // add the selected index to a counter
    counter +=((DropDownList)sender).SelectedIndex;
    // Now this is where I get stuck, if the current selected index is less
    // than the previous selected index, I want to subtract from the counter



}

Здесь моя проблема. Пожалуйста, прочитайте комментарии в обработчике события. (Извините, если у меня отключен какой-то синтаксис, на данный момент это все свободная рука)

У меня такое чувство, что я могу получить предыдущий выбранный индекс (или элемент, который не имеет значения) из аргументов события ((DropDownList) e).?

Пожалуйста, помогите>. <Это не так уж плохо! </p>

1 Ответ

4 голосов
/ 15 ноября 2011

Я не думаю, что есть встроенный механизм, но вы можете использовать ViewState или HiddenField, чтобы сохранить предыдущий индекс.Примерно так:

protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
    {
        int selectedIndex = ((DropDownList)sender).SelectedIndex;
        if (selectedIndex < (int)ViewState["PreviousIndex"])
        {
            counter -= ((DropDownList)sender).SelectedIndex;
        }
        else
        {
            counter += ((DropDownList)sender).SelectedIndex;
        }
        // update the index
        ViewState["PreviousIndex"] = selectedIndex;
    }
...