學習拾遺--用RadioButtonList 或者DropDownList 進行動態賦值問題

 動態的給radiobuttonlist 或者

d 賦值時 如果所賦的數值 在控件的列表中不存在時 往往會發生異常System.ArgumentOutOfRangeException: “DropDownList1”有一個無效 SelectedValue,因爲它不在項目列表中)
例如 dropdownlist1中用"111,222,333",如果複製dropdownlist1.text="444"dropdownlist1.selectedvalue="444"時就會出現前面的異常。


     但是有時候這種異常沒有出現,那是因爲我們沒有用到dropdownlist或radiobuttonlist控件的(IsPostBack)indexchange事件,當控件需要事件時上面的錯誤異常就會被捕獲。這是因爲SelectedValue 屬性還可以用於選擇列表控件中的某一項,方法是用該項的值設置此屬性。如果列表控件中的任何項都不包含指定值,則會引發 System.ArgumentOutOfRangeException。
同樣這樣 if ( DropDownList1.Items.FindByValue("中國").Selected)也會出現異常。

     我們可以用selectedindex來解決上面的問題:
     例如:DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue("中國"));
    這種方法在動態的賦值時先要檢索控件列表中是否有匹配的數值,如果數據匹配則dropdownlist.text的值被賦爲:“中國”,
   如果通過FindByValue沒有找到指定項則爲null,而Items.IndexOf(null)會返回-1,
     如果我們在初始化控件列表時制定了index最小時的默認值(DropDownList1.Items.Insert(0, "請選擇"))dropdownlist.text的值被賦爲index最小是的值“請選擇”,
    這樣就避免了異常的發生。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章