国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

安全的設置DropDownList等列表類控件的SelectedValue值

2019-11-18 16:48:47
字體:
來源:轉載
供稿:網友

asp.net 2.0 網站頁面的開發過程中,經常需要把DropDownList等列表類控件的SelectedValue值設置為一個從數據庫或其他地方讀取出來的值。

最簡單的辦法就是直接進行指定:
DropDownList1.SelectedValue = "中國";
但有的時候如果DropDownList1中沒有"中國"這一項的話,賦值就會出現異常:
異常詳細信息: System.ArgumentOutOfRangeException: “DropDownList1”有一個無效 SelectedValue,因為它不在項目列表中。

想要實現的目標:如果指定的值不在列表項中,則不設置選中項,而且不要拋出異常。


查看MSDN:
SelectedValue 屬性還可以用于選擇列表控件中的某一項,方法是用該項的值設置此屬性。如果列表控件中的任何項都不包含指定值,則會引發 System.ArgumentOutOfRangeException。

但奇怪的是這樣賦值在大部分情況下都不會出錯,只是偶爾會出錯,通過反射查了一下SelectedValue的實現,找到了原因。
public virtual string SelectedValue
{
      get
      {
            int num1 = this.SelectedIndex;
            if (num1 >= 0)
            {
                  return this.Items[num1].Value;
            }
            return string.Empty;
      }
      set
      {
            if (this.Items.Count != 0)
            {
                  if ((value == null) || (base.DesignMode && (value.Length == 0)))
                  {
                        this.ClearSelection();
                        return;
                  }
                  ListItem item1 = this.Items.FindByValue(value);
                  if ((((this.Page != null) && this.Page.IsPostBack) && this._stateLoaded) && (item1 == null))
                  {
                        throw new ArgumentOutOfRangeException("value", SR.GetString("ListControl_SelectionOutOfRange", new object[] { this.ID, "SelectedValue" }));
                  }
                  if (item1 != null)
                  {
                        this.ClearSelection();
                        item1.Selected = true;
                  }
            }
            this.cachedSelectedValue = value;
      }
}

原來只有在頁面是IsPostBack的情況下,賦值才會出錯。


另外這樣寫也會出現異常:
DropDownList1.Items.FindByValue("中國").Selected = true;
最后找到了一種方法可以實現上面的要求:
DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue("中國"));
就是如果通過FindByValue沒有找到指定項則為null,而Items.IndexOf(null)會返回-1
http://www.survivalescaperooms.com/weizhuangzhi/archive/2006/12/13/591251.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武乡县| 随州市| 高平市| 乐山市| 沂源县| 额尔古纳市| 和平县| 航空| 政和县| 香格里拉县| 南安市| 陆丰市| 大悟县| 玉山县| 建湖县| 石家庄市| 北京市| 佛山市| 鄂托克旗| 安多县| 松江区| 上蔡县| 石阡县| 房产| 洮南市| 临颍县| 滨海县| 溧阳市| 青冈县| 无极县| 南安市| 手游| 双桥区| 喀什市| 石台县| 蓝田县| 竹北市| 介休市| 高碑店市| 科技| 锦屏县|