根据ID前缀将项目添加到多个下拉列表

时间:2018-09-18 03:21:49

标签: c# asp.net

我是asp.net和C#的新手。我试图将某些项目添加到下拉列表中。 这是我的代码:

        <asp:DropDownList ID="WH1" runat="server" CssClass="form-control">
        </asp:DropDownList>
        <asp:DropDownList ID="WH2" runat="server" CssClass="form-control">
        </asp:DropDownList>
        <asp:DropDownList ID="WH3" runat="server" CssClass="form-control">
        </asp:DropDownList>
        <asp:DropDownList ID="WH4" runat="server" CssClass="form-control">
        </asp:DropDownList>
        <asp:DropDownList ID="WH5" runat="server" CssClass="form-control">
        </asp:DropDownList>
        <asp:DropDownList ID="WH6" runat="server" CssClass="form-control">
        </asp:DropDownList>
        <asp:DropDownList ID="WH7" runat="server" CssClass="form-control">
        </asp:DropDownList>
        <asp:DropDownList ID="WH8" runat="server" CssClass="form-control">
        </asp:DropDownList>

每个下拉列表将具有相同的列表。我尝试了这个帖子 Count html form inputs with name prefix from asp.net code behind 因此,我可以计算它,然后执行一些循环,然后在该循​​环内添加一些项目。但是该计数的结果始终为0。

var categoryInputCount = Request.Form.AllKeys.Where(x=>x.StartsWith("WH")).ToList().Count;

我做错了吗?即使我可以数数,如何将Item添加到每个下拉列表中。据我所知,要将项目添加到下拉列表中,我必须这样调用ID:

WH1.Items.Insert(0, new ListItem('value 1','value 1'));

2 个答案:

答案 0 :(得分:0)

因为您希望每个下拉列表都一样,并且希望能够进行自定义排序,所以我将在后面做所有代码。在您的asp页面上创建一个下拉列表支架,并通过使用适当的数据创建字典/列表来填充它。字典将始终以ABC方式排序。列表,您可以根据需要使用.OrderBy()对其进行排序。

您也可以轻松地将列表放入其他页面上的任何asp对象中。

答案 1 :(得分:0)

您可以尝试以下操作:

可以通过传递Page和一个列表来调用方法。

只需调用方法:

List<DropDownList> list = new List<DropDownList>();

GetListControl(Page, ref list);

private void GetListControl(Control controlCollection, ref List<DropDownList> dropDownCollection)
{
    foreach (Control c in controlCollection.Controls)
    {
        foreach (Control childc in c.Controls)
        {
            if (childc != null)
            {
                if (childc is DropDownList)
                {
                    if (childc.ID.StartsWith("WH"))
                    dropDownCollection.Add((DropDownList)childc);
                }

                if (childc.HasControls())
                    GetListControl(childc, ref dropDownCollection);
                }
            }
        }
    }