2011-07-12 52 views
0

我已通讀this,這幫助我將我的驗證問題縮小到RequiredFieldValidatorInitialValue屬性。RequiredFieldValidator在下拉列表中不接受空對象的IntialValue

我的下拉列表是由後面的代碼填充的對象列表,像這樣;

brands.Insert(0, Brand.Empty) 

cbBrand.DataValueField = "ID"; 
cbBrand.DataTextField = "Name"; 
cbBrand.DataSource = new BindingList<Brand>(brands); 
cbBrand.DataBind(); 

其中Brand.Empty是空對象類型。

我要脫膠的地方是讓IntialValue接受空值。例如,InitialValue=""無法識別列表中的空對象。

任何人都可以指出我的修復方向嗎?

回答

0

哇。我以爲在發佈這個問題之前,我已經非常徹底地在本網站上搜索過以前的答案,但是我錯過了this

答案是將<asp:DropDownList>更改爲AppendDataBoundItems=true,然後在dropDownList標籤和BAM之間添加<asp:ListItem Text="" Value="" />!您可以向列表中插入一個值,該值不需要在後面的代碼中插入空對象(應該將其刪除,以便在列表開始時不會出現2個空格)。

這裏的好處是,我的代碼隱藏中的列表綁定到對象類型<Brand>,但在客戶端添加空字符串可以很好地進行客戶端驗證。

希望這可以幫助任何人解決這個問題!

1

空字符串與空值不同。而不是添加一個空值到數據源的,將其添加到下拉直接想:

cbBrand.Insert(0, new ListItem("", "Select an item")); 

這將增加一個選項,你的HTML選擇元素與「值」,其驗證初始值相匹配。

+0

謝謝肯,欣賞答案。在列表被加載時插入自定義字符串的問題是列表'cbBrand'期望類型爲''。我找到了解決這個問題的方法(從SO:S上的另一篇文章中尷尬地發現),並將其發佈到下面。再次感謝! – CodeMonkey