3

对于我的 ASP.NET 页面,在后面的代码中,我将各种项目/选项加载到 DropDownList 中,但我没有通过分配 SelectedIndex 来设置默认值。我注意到回发 SelectedIndex 设置为 0,即使我从未将焦点设置到或更改 DropDownList 中的值。

如果没有在后面的代码或标记中另行指定,是否将默认值 0 用于带有 DropDownList 的回发中的 SelectedIndex?如果是,这是否是选择列表的 HTML 标准的一部分,或者这只是为 ASP.NET 实现的方式?

4

2 回答 2

5

这是 HTMLSELECT控件的正常行为。

除非使用 selected 属性,否则它将始终从第一项(索引为 0)开始。

在许多情况下,我不希望在 ASP.NET 中这样做,因为我特别希望用户选择一个选项。

所以我要做的是添加一个空白项目,然后我可以验证它。

IE

<asp:DropDownList runat="server" DataSourceID="SomeDS" AppendDataBoundItems="true"> // Notice the last property
    <asp:ListItem Text="Please select an option" Value="" />
</asp:DropDownList>

这样,我可以设置一个验证器来检查值是否为空,从而强制用户进行选择。

于 2010-07-18T19:35:36.803 回答
2

对于任何从后面的代码中寻找方法的人,您可以通过使用Insert函数并指定Index0 来添加额外的列表项,如本SO Question中所述。只要确保在你打电话后这样做DataBind()

myDropDownList.DataSource = DataAccess.GetDropDownItems(); // Psuedo Code
myDropDownList.DataTextField = "Value";
myDropDownList.DataValueField = "Id";
myDropDownList.DataBind();

myDropDownList.Items.Insert(0, new ListItem("Please select", ""));
于 2013-08-21T20:03:29.593 回答