學習拾遺--用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最小是的值“請選擇”,
這樣就避免了異常的發生。