“DropDownList1”有一个无效 SelectedValue,因为它不在项目列表中。

楼主jackrong427(热锅上的蚂蚁) 2006-07-21 11:10:28 在 .NET技术 / ASP.NET 提问

下面的代码老是提示  
  “DropDownList1”有一个无效   SelectedValue,因为它不在 项目 列表中。  
  参数名:   value    
  说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。    
   
  异常详细信息:   System.ArgumentOutOfRangeException:   “DropDownList1”有一个无效   SelectedValue,因为它不在项目列表中。  
  参数名:   value  
   
  我是想把depid数字显示为部门编号,但是不知道为什么老是提示上面的错误,搞不清了,大家帮忙看看  
   
   
  <asp:FormView   ID="FormView1"   runat="server"   AllowPaging="True"   DataKeyNames="ID"  
                          DataSourceID="SqlDataSource1">  
                          <EditItemTemplate>  
                                  ID:  
                                  <asp:Label   ID="IDLabel1"   runat="server"   Text='<%#   Eval("ID")   %>'></asp:Label><br   />  
                                  UserName:  
                                  <asp:TextBox   ID="UserNameTextBox"   runat="server"   Text='<%#   Bind("UserName")   %>'></asp:TextBox><br   />  
                                  PassWD:  
                                  <asp:TextBox   ID="PassWDTextBox"   runat="server"   Text='<%#   Bind("PassWD")   %>'></asp:TextBox><br   />  
                                  depname:  
                                  <asp:TextBox   ID="depnameTextBox"   runat="server"   Text='<%#   Bind("depname")   %>'></asp:TextBox><br   />  
                                  depid:  
                                  <asp:TextBox   ID="depidTextBox"   runat="server"   Text='<%#   Bind("depid")   %>'></asp:TextBox>  
                                  <asp:DropDownList   ID="DropDownList1"   runat="server"   DataSourceID="SqlDataSource2"   SelectedValue='<%#   Bind("depid")   %>'    
                                          DataTextField="depid"   DataValueField="depid"   >  
                                  </asp:DropDownList><br   />  
                                  <asp:LinkButton   ID="UpdateButton"   runat="server"   CausesValidation="True"   CommandName="Update"  
                                          Text="更新"></asp:LinkButton>  
                                  <asp:LinkButton   ID="UpdateCancelButton"   runat="server"   CausesValidation="False"   CommandName="Cancel"  
                                          Text="取消"></asp:LinkButton>  
                          </EditItemTemplate>  
                          <InsertItemTemplate>  
                                  UserName:  
                                  <asp:TextBox   ID="UserNameTextBox"   runat="server"   Text='<%#   Bind("UserName")   %>'>  
                                  </asp:TextBox><br   />  
                                  PassWD:  
                                  <asp:TextBox   ID="PassWDTextBox"   runat="server"   Text='<%#   Bind("PassWD")   %>'>  
                                  </asp:TextBox><br   />  
                                  depname:  
                                  <asp:TextBox   ID="depnameTextBox"   runat="server"   Text='<%#   Bind("depname")   %>'>  
                                  </asp:TextBox><br   />  
                                  depid:  
                                  <asp:TextBox   ID="depidTextBox"   runat="server"   Text='<%#   Bind("depid")   %>'>  
                                  </asp:TextBox><br   />  
                                  <asp:LinkButton   ID="InsertButton"   runat="server"   CausesValidation="True"   CommandName="Insert"  
                                          Text="插入">  
                                  </asp:LinkButton>  
                                  <asp:LinkButton   ID="InsertCancelButton"   runat="server"   CausesValidation="False"   CommandName="Cancel"  
                                          Text="取消">  
                                  </asp:LinkButton>  
                          </InsertItemTemplate>  
                          <ItemTemplate>  
                                  ID:  
                                  <asp:Label   ID="IDLabel"   runat="server"   Text='<%#   Eval("ID")   %>'></asp:Label><br   />  
                                  UserName:  
                                  <asp:Label   ID="UserNameLabel"   runat="server"   Text='<%#   Bind("UserName")   %>'></asp:Label><br   />  
                                  PassWD:  
                                  <asp:Label   ID="PassWDLabel"   runat="server"   Text='<%#   Bind("PassWD")   %>'></asp:Label><br   />  
                                  depname:  
                                  <asp:Label   ID="depnameLabel"   runat="server"   Text='<%#   Bind("depname")   %>'></asp:Label><br   />  
                                  depid:  
                                  <asp:Label   ID="depidLabel"   runat="server"   Text='<%#   Bind("depid")   %>'></asp:Label><br   />  
                                  <asp:LinkButton   ID="EditButton"   runat="server"   CausesValidation="False"   CommandName="Edit"  
                                          Text="编辑">  
                                  </asp:LinkButton>  
                                  <asp:LinkButton   ID="DeleteButton"   runat="server"   CausesValidation="False"   CommandName="Delete"  
                                          Text="删除">  
                                  </asp:LinkButton>  
                                  <asp:LinkButton   ID="NewButton"   runat="server"   CausesValidation="False"   CommandName="New"  
                                          Text="新建">  
                                  </asp:LinkButton>  
                          </ItemTemplate>  
                  </asp:FormView>  
                  &nbsp;   &nbsp;<asp:SqlDataSource   ID="SqlDataSource1"   runat="server"   ConflictDetection="CompareAllValues"  
                          ConnectionString="<%$   ConnectionStrings:jbwebschoolConnectionString   %>"   DeleteCommand="DELETE   FROM   [FT_User]   WHERE   [ID]   =   @original_ID"  
                          InsertCommand="INSERT   INTO   [FT_User]   ([UserName],   [PassWD],   [depname],   [depid])   VALUES   (@UserName,   @PassWD,   @depname,   @depid)"  
                          OldValuesParameterFormatString="original_{0}"   SelectCommand="SELECT   [ID],   [UserName],   [PassWD],   [depname],   [depid]   FROM   [FT_User]"  
                          UpdateCommand="UPDATE   [FT_User]   SET   [UserName]   =   @UserName,   [PassWD]   =   @PassWD,   [depname]   =   @depname,   [depid]   =   @depid   WHERE   [ID]   =   @original_ID">  
                          <DeleteParameters>  
                                  <asp:Parameter   Name="original_ID"   Type="Int32"   />  
                          </DeleteParameters>  
                          <UpdateParameters>  
                                  <asp:Parameter   Name="UserName"   Type="String"   />  
                                  <asp:Parameter   Name="PassWD"   Type="String"   />  
                                  <asp:Parameter   Name="depname"   Type="String"   />  
                                  <asp:Parameter   Name="depid"   Type="Int32"   />  
                                  <asp:Parameter   Name="original_ID"   Type="Int32"   />  
                          </UpdateParameters>  
                          <InsertParameters>  
                                  <asp:Parameter   Name="UserName"   Type="String"   />  
                                  <asp:Parameter   Name="PassWD"   Type="String"   />  
                                  <asp:Parameter   Name="depname"   Type="String"   />  
                                  <asp:Parameter   Name="depid"   Type="Int32"   />  
                          </InsertParameters>  
                  </asp:SqlDataSource>  
                  <asp:SqlDataSource   ID="SqlDataSource2"   runat="server"   ConnectionString="<%$   ConnectionStrings:jbwebschoolConnectionString   %>"  
                          SelectCommand="SELECT   [depid],   [depname],   [deptype],   [depnumber]   FROM   [dep]"></asp:SqlDataSource>  
  问题点数:100、回复次数:18Top

src="/Include/Board.htm?Tags=" frameborder="0" scrolling="no">

1 楼jackrong427(热锅上的蚂蚁)回复于 2006-07-21 11:11:44 得分 0

刚刚写错了:我是想把depid数字显示为部门名称,但是不知道为什么老是提示上面的错误,搞不清了,大家帮忙看看Top

2 楼hxling1981(冷雨星空)回复于 2006-07-21 11:31:19 得分 0

DataTextField="depName"   DataValueField="depid"    
   
   
    Bind("depid")   这个方法返回一个DATATABLE吗Top

3 楼Eddie005(♂) №.零零伍 (♂)回复于 2006-07-21 11:34:44 得分 0

这个绑定并没有任何问题,很可能是测试数据的问题:[FT_User]表中有些行的deptid在[dep]表中不存在或者值为<null>Top

4 楼lw7210(风中邪神)回复于 2006-07-21 11:34:47 得分 0

<asp:DropDownList   ID="DropDownList1"   runat="server"   DataSourceID="SqlDataSource2"   SelectedValue='<%#   Bind("depid")   %>'    
                                          DataTextField="depname"   DataValueField="depid"   >Top

5 楼ncjcz(新手上路)回复于 2006-07-21 11:40:06 得分 0

SelectedValue='<%#   Bind("depid")   %>'    
  这句有问题,Bind("depid")得到的结果在你数据源的deptid里肯定没有Top

6 楼hzw66(超越理想)回复于 2006-07-21 11:48:14 得分 0

SelectedValue不能赋值,用SelectedIndexTop

7 楼Eddie005(♂) №.零零伍 (♂)回复于 2006-07-21 11:53:34 得分 0

偶上面已经强调了:  
  SelectedValue='<%#   Bind("depid")   %>'   这个绑定 语法 完全是正确的!  
   
  上面有其他说法的兄弟们要注意更正自己原先错误的理解了。  
  Top

8 楼hzw66(超越理想)回复于 2006-07-21 12:03:03 得分 0

俺也要强调:  
  SelectedValue不能赋值,用SelectedIndexTop

9 楼fellowcheng(鹰击长空)回复于 2006-07-21 12:14:55 得分 0

页面上   SelectedValue='<%#   Bind("depid")   %>'     应该是可以的Top

10 楼Eddie005(♂) №.零零伍 (♂)回复于 2006-07-21 12:19:44 得分 0

to   楼上:  
   
        即便您说地球是方的那就是方的了,偶无意跟您争论,但是,为什么你就连打开 .net   framework   sdk   或者写一行代码验证一下这么简单的事都不愿意做呢?  
   
  ==============================================================================    
  .NET   Framework   类库        
   
  ListControl.SelectedValue   属性请参见  
  ListControl   类   |   ListControl   成员   |   System.Web.UI.WebControls   命名空间   |   SelectedItem   |   SelectedIndex   |   DataValueField   |   Items   |   ListItem   |   System.ArgumentOutOfRangeException   |   C++   托管扩展编程    
  要求  
  平台:   Windows   2000,   Windows   XP   Professional,   Windows   Server   2003   系列  
  语言  
  C#  
   
  C++  
   
  JScript  
   
  Visual   Basic  
   
  全部显示  
  注意:此命名空间、类或成员仅在   . NET   Framework   1.1   版中受支持。    
  获取列表控件中选定项的值,或选择列表控件中包含指定值的项。  
   
  [Visual   Basic]  
  Public   Overridable   Property   SelectedValue   As   String  
   
  [C#]  
  public   virtual   string   SelectedValue   {get;   set;}  
   
  [C++]  
  public:   __property   virtual   String*   get_SelectedValue();  
  public:   __property   virtual   void   set_SelectedValue(String*);  
   
  [JScript]  
  public   function   get   SelectedValue()   :   String;  
  public   function   set   SelectedValue(String);  
   
  属性值  
  列表控件中选定项的值。默认值为空字符串   ("")。  
   
  异常  
  异常类型   条件    
  ArgumentOutOfRangeException   SelectedValue   属性的设定值与列表控件中的项不相符。    
   
  备注  
  通常使用   SelectedValue   属性确定列表控件中选定项的值。如果未选定任何项,则返回一个空字符串   ("")。  
   
  SelectedValue   属性还可以用于选择列表控件中的某一项,方法是用该项的值设置此属性。如果列表控件中的任何项都不包含指定值,则会引发   System.ArgumentOutOfRangeException。  
   
  ..........Top

11 楼wsxcy66668888()回复于 2006-07-24 15:07:14 得分 0

你的DropDownList1是放在一个模板列中吗,如果是,请将sqldatasoure放入模板中Top

12 楼Brookes(边走边唱)回复于 2006-07-24 15:19:50 得分 0

Eddie005(♂)   №.零零伍   (♂)      
  完全正确,SelectedValue当然可以绑定赋值,说不可以的同学自己试试吧,不知道被谁误了  
   
  lz代码看不出问题,只能是你数据源返回的值确实不在DrowDownList的列表中(注意null),可以试着监控该值  
   
  或者,DropDownList或FromView   的Binding事件中写代码处理,试着用DropDownList.Items.FindByValue(v)查找item  
   
   
       
     
  Top

13 楼loveWife(我爱红)回复于 2006-07-24 15:41:24 得分 0

                                                      myLanmu.SearchPDName();  
  dl_pdname.DataTextField   =   "lm_name";  
  dl_pdname.DataValueField   =   "lm_id";  
  dl_pdname.DataSource   =   myLanmu.DataSource;  
  dl_pdname.DataBind();  
   
  DropDownList   绑顶数据很简单,你怎么搞得那么麻烦?Top

14 楼vAction()回复于 2006-11-18 23:52:34 得分 0

强烈关注中!的确没有找到一个有效的方法。  
  主要问题出在,GRIDVIEW所bind的数据库中的值,在dropdownlist中找不到,查了资料说是因为sql出来的值("abc       ")前后有空格,所以和dropdownlist中的值("abc")不匹培造成,如何解决我也一直没有找到方法。Top

15 楼sleepcraft(越学越不懂)回复于 2006-11-19 11:03:07 得分 0

DROPDOWNLIST的绑定还是最好放在后台  
  然后数据库不匹配的问题我是这样解决的  
  首先是dropdownlist的绑定,没有使用DATASET的方式,而是采用sqldatareader,这里效率应该比dataset高  
  ///  
  Dim   dlctype   As   SqlDataReader  
  dlctype   =   ......(取出sqldatareader)  
  Do   While   dlctype.Read  
            Me.dl_ctype.Items.Add(New   ListItem(dlctype("id"),   dlctype("name")))  
  Loop  
            Me.dl_ctype.Items.Insert(0,   New   ListItem("未分类",   0))  
  dlctype.Close()  
  /  
  dropdownlist的赋值,如果没有匹配值,则增加一个值  
  ///  
  Try  
              Me.dl_ctype.SelectedValue   =   Reader("name")  
  Catch   ex   As   Exception  
                Me.dl_ctype.Items.Insert(1,   New   ListItem(Reader("id"),   Reader("name")))  
                Me.dl_ctype.SelectedValue   =   Reader("ctype")  
  End   TryTop

16 楼dick78(vs2005+Ajax)回复于 2006-11-19 17:39:14 得分 0

为DropDownList1的SelectedValue属性付的数值的前提是DropDownList1中已经存在这个数据值,付值实际上是找到匹配的数值然后使其成为当前选中的数值显示出来..Top

17 楼dick78(vs2005+Ajax)回复于 2006-11-19 17:48:02 得分 0

从报错上看是没有找到匹配的数据。  
  DropDownList1.SelectedIndex=DropDownList1.Item.IndexOf(DropDownList1.Item.FindByText("部门名称"));能达到同样的效果,但条件是DropDownList1的text中必须的有“部门名称”这个数值。Top

18 楼yyw84(乱码人生)回复于 2006-11-19 18:18:53 得分 0

在DropDownList的DataBind事件里面写this.DropDownList1.SelectedValue   =   XXX;Top

 

address:http://topic.csdn.net/t/20060721/11/4895332.html#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值