我是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'));
答案 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);
}
}
}
}