2010-07-18 138 views
3

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

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

回答

4

这是HTML SELECT控件的正常行为。

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

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

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

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

这样,我可以设置一个验证,检查该值是否为空,强迫用户进行选择。

1

任何人寻找一种方式来从代码做到这一点的背后,你可以在那里使用Insert功能和指定的0 Index,添加额外的列表项在本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", ""));