以前的项目.文本的下拉列表

本文关键字:下拉列表 文本 项目 | 更新日期: 2023-09-27 18:14:57

我正在使用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)中获得以前选择的索引(或项目无关紧要)。

请帮忙>.<这看起来不太糟!>

以前的项目.文本的下拉列表

我不认为有一个内置的机制,但你可以使用ViewStateHiddenField来保持以前的索引。如下所示:

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;
    }