从填充了Text和Values的数组动态生成DropdownLIst控件

时间:2016-05-25 17:41:24

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

我正在尝试将DropDownList控件绑定到各种数据存储。在我的例子中,数据存储是数组文件值和项目文本。

这是我的HTML的简短示例:

 <asp:DropDownList ID="DropDownListDealCategory"  
                                          runat="server" 
                                          Height="25px" 
                                          Width="150px" 
                                          AutoPostBack="true"
                                          OnSelectedIndexChanged="DropDownListDealCategory_SelectedIndexChanged">
                            <asp:ListItem Selected="True" Value="0">-- Select Category --</asp:ListItem>
                            <asp:ListItem Value="10">Electronics</asp:ListItem>
                            <asp:ListItem Value="22">Computer</asp:ListItem>                               
                        </asp:DropDownList>

<asp:DropDownList ID="DropDownSubCategories" 
                                            runat="server" 
                                            Visible="false" 
                                            Height="25px" 
                                            Width="170px" 
                                            AutoPostBack="true"
                                            OnSelectedIndexChanged="DropDownSubCategories_SelectedIndexChanged">
                        </asp:DropDownList>

后面的代码(C#)将从两个数组动态生成DropDownList控件。

    protected void DropDownDealCategory_SelectedIndexChanged(object sender, EventArgs e)
{
string[] Electronics = new[] { " Select Subcategory ", "Cameras and Photography", "Home Audio"};
string[] Computer = new[] {" Select Subcategory " "Laptops", "Monitors"};

if (DropDownListCategory.SelectedItem.Text == "Electronics")
    {
        DropDownSubCategories.DataSource = Electronics;
    }
 else if (DropDownListDealCategory.SelectedItem.Text == "Computer")
    {
        DropDownSubCategories.DataSource = Computer;
    }

DropDownSubCategories.DataBind();
    DropDownSubCategories.Visible = DropDownListCategory.SelectedItem.Text != " Select Category ";

所以,直到这里一切都很好,除了我需要 DropDownSubCategories DropDownList控件中每个项目的categoryId,否则我将无法从外部数据库中检索任何产品,因为我需要名称 + categoryid 才能显示产品说明。

我的问题是,有没有办法将两个值(一个作为Value,另一个作为Item.Text)添加到数组中,所以我可以将它们都绑定到DropDownList控件?

谢谢你,任何帮助甚至是另一种建议都会受到赞赏。

2 个答案:

答案 0 :(得分:1)

尝试使用ListItem s。应该看起来像下面这样。

        var Electronics = new[]{
            new ListItem{ Value = "0", Text = " Select Subcategory "},
            new ListItem{ Value = "1", Text = "Cameras and Photography"},
            new ListItem{ Value = "2", Text = "Home Audio"},
        };

您可能需要添加使用。

using System.Web.UI.WebControls;

编辑:

尝试以这种方式添加它们:

DropDownSubCategories.Items.Clear();
DropDownSubCategories.Items.AddRange(Electronics);

或者如果AddRange()不是函数,则单独:

DropDownSubCategories.Items.Add(new ListItem{ Value = "2", Text = "Home Audio"});

等等。

答案 1 :(得分:0)

Dictionary类用于存储键/值对。

            Dictionary<int, string> Electronics = new Dictionary<int, string>() {

            {0, "Select Subcatagory" },
            {1, "Cameras and Photography" },
            {2, "Home Audio" }

        };