c# - 下拉列表的上一项.text

标签 c# asp.net dynamic event-handling

我正在使用 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;
    }

关于c# - 下拉列表的上一项.text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8139585/

相关文章:

c# - 何时使用 API Controller 与 MVC Controller

asp.net - SignalR-client在短时间内发送大量请求

wpf - 如何在 WPF DataGrid 中动态生成列?

C#:验证扩展方法中的 "this"参数的最佳实践

c# - 页面加载后对象是否符合垃圾回收条件?

c# - 将日期时间选择器的默认格式设置为 dd-MM-yyyy

c# - IE11 用户代理

asp.net - 删除 IIS ApplicationPoolIdentity 创建的 Windows 用户?

c - 动态结构中的不同数组,创建,写入,读取

javascript - 已解决 : How to check multiple email addresses in dynamic fields to check if user already exists or not