教程中国
PHOTOSHOP CS9.0中文版 MAYA 8.5 FOR WINDOWS Corel Painter v9.0 Flash MX2004 中文版 Illustrator cs2 中文版
VC++6.0含sp6 中英文版 VB6.0 +sp6 简体中文版 Borland Delphi 7汉化版 MSDN for vb6.0中文版 Visual Studio 2005简体
教程中国下属 文件存储共享专家BIBIDU.COM 提供大型软件,教材,源码,电影,音乐,图书等下载 更多精品请点此进入
  您目前所在位置: 教程中国 >> .NET类 >> ASP.NET >> 安全的设置DropDownList等列表类控件的SelectedValue值 RSS订阅
安全的设置DropDownList等列表类控件的SelectedValue值
教程(视频,书籍)下载:  ASP.NET AutoCAD 数据库 C# ASP java photoshop 网页设计 delphi 3dmax Flash C++ VB 张孝祥 实例   更多请进入BIBIDU搜索
IT搜索引擎   
     在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.cnblogs.com/weizhuangzhi/archive/2006/12/13/591251.HTML
  
  
    。



来源:upschool.com.cn
作者:
关键字:安全
发表日期:2006-12-15

网页显示有限 阅读全文请下载本文完整版WORD文档

上一篇:得到内网可用的SqlServer 及某数据库下的表及其他的架构   下一篇:sql2005的xml字段类型在.net中的应用3


本文的相类似文章
  • 局域网路由安全设置之独孤九剑
  • 电子政务特点及其系统安全全攻略
  • Cisco路由器安全配置必用10条命令
  • 保护路由器安全的十四招必杀技
  • 交换机安全使用的六条基本法则
  • 建立一个安全的局域网无线连接
  • 教你配置Linux系统安全管理服务
  • 路由器基本原理与安全设置技巧
  • WLAN无线局域网安全技术的选用
  • 技巧:消除无线网络安全风险
  • 网友评论 查看本文全部评论
    笔 名: *
    评 论:
    最多500字。当前字数:0
    联系方式:
    验证码:
    在学习中进步 在进步中成长 教程中国相随您的成长之路
    华腾联合科技股份有限公司版权所有
    广告联系:Rosibo@163.com