我正在使用 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) 中获取先前选择的索引(或无关紧要的项目)。?
请帮忙>。<这看起来还不错!
最佳答案
我认为没有内置机制,但您可以使用 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;
}
关于c# - 下拉列表的上一项.text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8139585/