【问题标题】:using string to set default selection of drop down list使用字符串设置下拉列表的默认选择
【发布时间】:2013-07-15 21:00:10
【问题描述】:

我有一个来自按字母顺序显示的 sqldatasource 的下拉列表。因此,列表索引号根本不与 SQL 表中的主键对齐。我需要能够根据我拥有的主键信息在页面加载时设置下拉列表的选择。

<asp:DropDownList ID="catagoryDropDown" runat="server" DataSourceID="SqlDataSource3"
     DataTextField="Catagory" DataValueField="PK_SupportCatagory" CssClass="dropDownList">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$     
     ConnectionStrings:ApplicationServices %>"
     SelectCommand="SELECT [PK_SupportCatagory], [Catagory] FROM [SupportCatagory] ORDER BY CASE  
     WHEN [PK_SupportCatagory] = 1 THEN 1 ELSE 2 END, [Catagory]">
</asp:SqlDataSource>

我的想法是通过查询数据库来获取字符串,使用它来适当地设置下拉列表。

catagoryDropDown.SelectedValue = "Sick Leave";

以上行不通。我将如何做到这一点?有没有更好的方法来做到这一点?

【问题讨论】:

    标签: c# asp.net drop-down-menu


    【解决方案1】:

    Garrison Neely 的回答不太奏效,但它让我走上了正轨。这最终奏效了:

                int i = 0;
                foreach (var item in catagoryDropDown.Items)
                {
                    if (item.ToString().Equals("Sick Leave"))
                    {
                        catagoryDropDown.SelectedIndex = i;
                        break;
                    }
                    i++;
                }
    

    【讨论】:

    • 回答你自己的问题总是很棒!
    【解决方案2】:
    var selectedIndex = -1;
    
    for(int i = 0; i < catagoryDropDown.Items.Count; i++)
    {
        if(catagoryDropDown.Items[i].Text.ToLower() == "sick leave")
        {
            selectedIndex = i;
            break;
        }
    }
    
    if(selectedIndex > -1)
    {
        catagoryDropDown.SelectedIndex = selectedIndex;
    }
    

    添加了 .ToLower() ,因为当字符串不担心大小写时,它使事情变得更容易。

    【讨论】:

    • 在这种情况下item 是什么?
    • 哈哈,忘了从我在 foreach 中的初始实现中更改那部分。很好的收获。
    【解决方案3】:

    试试这个:

    catagoryDropDown.SelectedValue = catagoryDropDown.Items.FindByText("Sick Leave").Value;
    

    【讨论】:

    • 获取 NullReferenceException
    • null是哪一部分?
    【解决方案4】:

    试试这个,我很确定它会起作用:

    ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByText(Convert.ToString(Any Value)));
    

    确保该值之前存在于(ddl绑定的)数据源中。

    【讨论】:

    • 对于来自数据源(ddl 绑定的)的任何列表项值动态设置 ddl 的索引,这是最简单的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 2013-10-23
    • 1970-01-01
    相关资源
    最近更新 更多