asp.net中不能在DropDownList中选择多个项 原因分析及解决方法

示例代码:


代码如下:

BulkStockBll bll = new BulkStockBll();
DataSet ds = bll.GetBulkStock();
this.ddl_BulkStock.DataTextField = "Name" ;
this.ddl_BulkStock.DataValueField = "ID" ;
this.ddl_BulkStock.DataSource = ds;
this.ddl_BulkStock.DataBind();
this.ddl_BulkStock.Items.Add(new ListItem( "全部", "0" ));//第一次选择!
this.ddl_BulkStock.Items.FindByValue("0" ).Selected = true;
*******************************
this.ddl_BulkStock.Items.FindByValue(infobulkstockid).Selected = true;//第二次选择!
******************************

出现了两次选择,所以报错。
page load的时候,index0的Selected = true,你再选一个index1的Selected 也true了,就报错。
不要用dropDownList.Items[x].Selected = true/false,推荐用dropDownList.SelectedIndex = x。
解决方法有两个:
(1)在选择某个选项时,不用上面的绿色代码显示方式,使用下面的代码
this .ddl_BulkStock.SelectedIndex = ddl_BulkStock.Items.IndexOf(ddl_BulkStock.Items.FindByValue(infobulkstockid));
(2)在每次选择某个选项前,使用ClearSelection操作。
this.ddl_BulkStock.ClearSelection();

今天在编辑页面出现:不能在 DropDownList 中选择多个项。

仔细的找了原因发现:


代码如下:

<asp:DropDownList ID="Com_Ygrenshu" runat="server" style="margin-left:8px;">
<asp:ListItem Value="0">请选择人数</asp:ListItem>
<asp:ListItem Selected="True" Value="5">5人以下</asp:ListItem>
<asp:ListItem Value="10">5-10 人</asp:ListItem>
<asp:ListItem Value="50">11-50 人</asp:ListItem>
</asp:DropDownList>

我在编辑页面进行重新绑定数据的代码:


代码如下:

for (int i = 0; i < this.Com_Ygrenshu.Items.Count; i++)
{
Com_Ygrenshu.Items[i].Selected = false;

//如果没有上面这一句那么将出错误:不能在 DropDownList 中选择多个项
if (Com_Ygrenshu.Items[i].Value.Trim() == ds.Tables[0].Rows[0]["Empl_Num"].ToString().Trim())
{
Com_Ygrenshu.Items[i].Selected = true;
}
}

原因是:你的DropDownList有两个Selected="True" 选项,所以出错!
#dropdownlist控件

(0)

相关推荐

  • ASP.NET中DropDownList下拉框列表控件绑定数据的4种方法

    DropDownList Web 服务器控件使用户能够从预定义的列表中选择一项.它与 ListBox Web 服务器控件的不同之处在于,其项列表在用户单击下拉按钮之前一直处于隐藏状态.另外,DropDownList 控件与 ListBox 控件的不同之处还在于它不支持多重选择模式. DropDownList在html中的呈现对应的是select,下面让我们来看一下DropDownList绑定数据的几种方法. 一.把Array数组绑到DropDownList 复制代码 代码如下: string[]

  • DropDownList添加客户端下拉事件操作

    如果要想给 DropDownList 服务器控件添加客户端下拉事件,我们可以强制给它添加 onchange 事件,尽管在控件中没有这个方法的提示.添加完这个事件还不能达到目的,还要设置 AutoPostBack 属性为 false,不让它回发后台事件. 以下就是为大家分享的代码: <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Dr

  • DropDownList 下拉框选择改变促发事件和防全局刷新(推荐)

    代码: <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> //ASP.NET中使用UpdatePanel实现局部异步刷新 <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Dr

  • DropDownList实现可输入可选择(两种版本可选)

    1.js版本 <div style="z-index: 0; visibility: visible; clip: rect(0px 105px 80px 85px); position: absolute"> <asp:DropDownList ID="ddlModel" runat="server" Style="z-index: -1" Width="105px" onchange=

  • asp.net DropDownList实现二级联动效果

    最近在做新闻发布系统的时候,用到了二级联动,我把使用方法记录下来,以便日后查阅以及帮助新手朋友们.下面是效果图: 下面来讲解一下实现的方法: 1.在.aspx页面中,拖入两个DroDownList控件.代码如下: <tr> <td>新闻风格:</td> <td><asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True&q

  • C#使用DropDownList绑定添加新数据的方法汇总

    DropDownList控件又称下拉列表框控件, 控件 列表 中的多行数 据 以隐含 的形式表 示 出 来,当用户需要选择所需列表项时,通过点击 "下三角 "图形 展示 ,用户每次 只能选用一个 数据项.DropDownList控件实际上是列表项 的 容器 ,下拉列表框 用 Items集合表示各项 的内 容.如果在 ASP.NET页面中逐个 的手 动填写 DropDownList控件的列表选项,当列表项很多 的时候会 比较繁琐 ,而且修改 比较麻烦 . DropDownList控件动态

  • 在dropDownList中实现既能输入一个新值又能实现下拉选的代码

    aspx: 复制代码 代码如下: <div id="selDiv" style=" z-index:100; visibility:visible; clip:rect(0px 110px 80px 92px); position:absolute"><%--left:279px; top:167px"--%> <asp:DropDownList ID="workerno_list" runat="

  • DropDownList绑定选择数据报错提示异常解决方案

    抛出的异常信息:异常详细信息: System.ArgumentOutOfRangeException: "ddlTotalCostDiscount "有一个无效 SelectedValue,因为它不在项目列表中. 原先给DropDownList这样赋值: this.ddlTotalCostDiscount.SelectedValue = obj.TotalCostDiscount.ToString(): 改成这样赋值: ddlTotalCostDiscount.SelectedInde

  • 用javascript为DropDownList控件下拉式选择添加一个Item至定义索引位置

    用Javascript为DropDownList控件下拉式选择添加一个Item至定义索引位置. 准备数据,创建一个对象,将是存储DropDownList控件每个Item数据. 复制代码 代码如下: Imports Microsoft.VisualBasic Namespace Insus.NET Public Class Catalog Private _ID As Integer Private _Name As String Public Property ID As Integer Get

  • asp.net中不能在DropDownList中选择多个项 原因分析及解决方法

    示例代码: 复制代码 代码如下: BulkStockBll bll = new BulkStockBll(); DataSet ds = bll.GetBulkStock(); this.ddl_BulkStock.DataTextField = "Name" ; this.ddl_BulkStock.DataValueField = "ID" ; this.ddl_BulkStock.DataSource = ds; this.ddl_BulkStock.Data

  • JavaScript中的ParseInt("08")和“09”返回0的原因分析及解决办法

    今天在程序中出现一个bugger ,调试了好久,最后才发现,原来是这个问题. 做了一个实验: alert(parseInt("01")),当这个里面的值为01====>07时都是正常的,但是在"08","09"就会返回0 (这种现象出现在ie内核的浏览器中,如360浏览器就会出现这种错误)(谷歌,火狐不受影响) . 查阅资料得知着这种现象原因: 大神的解释: 01--07自然没有问题,但是09,08都是不合格的八进制形式,所以被按照0处理了

  • asp.net LC.exe已退出代码为 -1的原因分析及解决方法

    可能的原因是: 这个第三方组件是个商业组件,他在组件的主使用类定义了 LicenseProvider(typeof(LicFileLicenseProvider)) 这个Attribute. VS2005在编译时检测到这个类的时候,会检查到组件使用的是LicFileLicenseProvider这个属性,表示有组件使用的是把许可的辅助信息保存在license.licx文件中,这个文件保存在vs2005中解决方案资源管理器中的Properties文件夹内. 这个文件的内容实际上是个引用,他保存着你

  • jquery中使用$(#form).submit()重写提交表单无效原因分析及解决

    问题:最近使用 jqeury 的 validationEngine 做ajax校验,当表单中的最后一个字段需要做ajax验证时,此时在字段输入完毕后点击回车提交表单时不起作用,必须再按一次/点击submit按钮. 分析:通过个跟踪其源代码,最终发现ajax验证成功后也再次submit了表单,但还是不能真正提交表单. 原因:很诡异,因为我的提交表单按钮名字是submit.改掉就好了. 复制代码 代码如下: <input id="submit" type="submit&q

  • jsp页面中EL表达式被当成字符串处理不显示值问题的解决方法

    在自己练手时遇到了EL表达式被当成字符串处理而没有正确解析的现象.当时工程中使用的Javaee5, web.xml <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/

  • Layui之table中的radio在切换分页时无法记住选中状态的解决方法

    情景描述 Layui数据表格中用到了表单元素radio,在当前页面选中radio状态,并同步更新到保存表格中所有的数据的数组中(获取表格中的所有数据并保存到数组中),再点击分页组件中的下一页.上一页.跳转按钮进行切换另外一个页面,然后在切换回之前的页面,会发现在以前页面上radio状态全部恢复默认了,我们当然是希望能保存住前一页radio的选中状态. 我写项目遇到的一个的情况:在第一页选中的radio的状态,点击下一页按钮切换到第二页,然后再点击上一页切换会第一页,第一页中的radio状态就恢复

  • Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法

    关于conda安装matplotlib报错 最近在师姐机器上跑实验的时候,想利用matplotlib包来绘制损失曲线图,安装过程中碰到了一些小麻烦,感觉之前好像也碰到过类似的问题,网上一搜什么numpy.matplotlib.pillow包版本冲突啊,然后就是各种尝试,直至重装Anaconda,当时特头疼,最后无意中解决了,今天又碰到了类似的问题,这次记录下来防止忘记 系统版本: Windows 10 python包管理工具:conda 4.7.11 python版本:3.7.4 从头开始,首先

  • 后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法

    1.问题: 后端接收不到AngularJs中$http.post发送的数据,总是显示为null 示例代码: $http.post(/admin/KeyValue/GetListByPage, { pageindex: 1, pagesize: 8 }) .success(function(){ alert("Mr靖"); }); 代码没有错,但是在后台却接收不到数据,这是为什么呢? 用火狐监控:参数是JSON格式 用谷歌监控:传参方式是request payload 可以发现传参方式是

  • Android编程中activity启动时出现白屏、黑屏问题的解决方法

    本文实例讲述了Android编程中activity启动时出现白屏.黑屏问题的解决方法.分享给大家供大家参考,具体如下: 默认情况下 activity 启动的时候先把屏幕刷成白色,再绘制界面,绘制界面或多或少有点延迟,这段时间中你看到的就是白屏,显然影响用户体验,怎么消除呢? 在 Activity theme 设置style 即可 <style name="AppTheme" parent="android:Theme.Light.NoTitleBar">

  • Android编程中聊天页面背景图片、标题栏由于键盘引起问题的解决方法

    本文实例讲述了Android编程中聊天页面背景图片.标题栏由于键盘引起问题的解决方法.分享给大家供大家参考,具体如下: 在一个群里面有人问到 聊天页面由于键盘弹出来,导致自定义的标题栏不见和背景图片都变形了,然后自己也折腾了一下,在stackOverFlow上面找到了一个解决方法. 解决方法很简单: 1.在AndroidManifest.xml文件里面的Activity配置: 复制代码 代码如下: android:windowSoftInputMode="adjustResize|stateAl

随机推荐