2010-07-18 289 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", ""));