我正在尝试做一些我认为很简单的事情[能够以这种方式在PHP中执行]但是aspx正在抱怨...代码应该构建一个下拉菜单,其中包含从x到y的数字,我将其写为:
<asp:DropDownList runat="server" ID='DOBD'><asp:ListItem value=''>---</asp:ListItem>
<% for (int i = 1;i<32;i++) { %>
<asp:ListItem value='<%= i %>'><%= i %></asp:ListItem>
<% } %>
</asp:DropDownList>
我收到代码块错误,不知道该怎么做。 提前谢谢你的帮助!
答案 0 :(得分:2)
在codebehind类中添加项目。您可以使用控件的id
访问任何控件:
this.DOBD.Items.Add(new ListItem("----"));
for (int i = 1; i < 32; i++)
{
this.DOBD.Items.Add(new ListItem(i.ToString()));
}
另外,您可以离开<asp:ListItem value=''>---</asp:ListItem>
,但在这种情况下,您需要将AppendDataBoundItems
设置为true
:
<asp:DropDownList ID="DOBD" runat="server" AppendDataBoundItems="true"></asp:DropDownList>
此外,没有代码隐藏类的解决方案:
<%
for (int i = 1; i < 32; i++)
{
this.DOBD.Items.Add(new ListItem(i.ToString()));
}
%>
<asp:DropDownList ID="DOBD" runat="server" AppendDataBoundItems="true">
<asp:ListItem Text="---"></asp:ListItem>
</asp:DropDownList>
答案 1 :(得分:1)
作为Samich's answer的替代方案,您可以使用DataSource填充下拉列表:
<asp:DropDownList runat="server" ID='DOBD'
DataSource='<%# System.Linq.Enumerable.Range(1, 32) %>'>
</asp:DropDownList>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if(! IsPostback) {
DOBD.DataBind();
}
}
</script>
或ObjectDataSource