【问题标题】:asp.net DropDownListasp.net 下拉列表
【发布时间】:2011-10-29 09:27:42
【问题描述】:

目前我有一个下拉列表如下:

<asp:DropDownList  ID="DropDownList1" runat="server"  AutoPostBack="True" 

    OnSelectedIndexChanged="SelectionHasChanged"
                DataSourceID="SqlDataSource1" DataTextField="Name" DataValueField="ID" 
                 Width="214px">
            /asp:DropDownList>

            asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:MyDBConnectionString1 %>" 
                SelectCommand="SELECT [ID], Name], [Name] FROM [Names]">
            /asp:SqlDataSource>

在选择更新或删除时,我试图获取列表的两件事: 1)从DropDownList中删除已删除的内容 2)页面加载时在字段中找到数据库中的第一个条目,我希望它为空白或说“选择”

目前我需要重新刷新页面以刷新已删除项目的下拉列表。

我尝试在各种方法(page_load、update、delete)和DropDownList1.DataSource = SqlDataSource1; 中添加DropDownList1.DataBind();(但我收到一条消息以删除 (SqlDataSource1?) 的对象

我添加了一个名为EnableViewState="false" 的标签/控件,当我选择另一个项目时,它会刷新下拉列表,但是当我删除一个项目时,我需要立即刷新列表。

【问题讨论】:

    标签: asp.net web drop-down-menu load refresh


    【解决方案1】:

    1.为了从你的下拉列表中删除一个项目,你要做的就是循环通过下拉列表的ListItem比较ListItem项目的值字段(DataValueField)和已经改变的选择或已删除,如果匹配,请将其从下拉列表中删除。例如:

    private void removeItem(string ID)
        {
            for (int i = 0; i < dropdownList.Items.Count; i++)
                if (dropdownList.Items[i].Value == ID)
                {
                    dropdownList.Items.RemoveAt(i);
                    break;
                }
        }
    

    2.绑定下拉列表后,在后面的代码中,在Index 0 处添加一个新的ListItem,它将解决您将“选择”或空白显示为最顶部选择的问题:

    dropdownList.DataBind();
    dropdownList.Items.Insert(0, new ListItem("Select"));
    

    【讨论】:

    • 感谢您的帮助,我真的很感激。为了确保我这样做是正确的,我将私有 void removeItem 添加到我的代码隐藏文件中,并将 dropdownlist.bind 和 . items.insert 到我的更新和删除方法中?另外,我的 ID 是数据库中的一个 int 我将如何转换字符串。添加covert.int32(ID) 时,它似乎对我不起作用。
    • 当你从下拉列表中删除一个项目时,你不需要调用 dropdownlist.Bind 。为了将整数转换为字符串,你可以使用 .toString() 方法
    猜你喜欢
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 2013-05-03
    • 2012-05-27
    • 2011-10-25
    • 1970-01-01
    相关资源
    最近更新 更多