今天打算学习下dropdownlist控件的取值,当你通过数据库控件或dataset绑定值后,但又希望显示指定的值,这可不是简单的值绑定就OK,上网搜了一些资料,想彻底了解哈,后面发现其中有这么大的奥妙,可以通过很多种方法解决同样的问题,下面详说:
一、dropdownlist控件的值绑定方法:
1、直接输入item项
<asp:DropDownList ID="DropDownList1" runat="server" >
<asp:ListItem>张三</asp:ListItem>
<asp:ListItem>李四</asp:ListItem>
</asp:DropDownList>
这恐怕是最简单的,看下面这种
2、数据源控件绑定
<asp:DropDownListID="DropDownList1"runat="server"DataSourceID="SqlDataSource1"DataTextField="name"DataValueField="name"> </asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings: ConnectionString %>"
SelectCommand="SELECT [name] FROM [yh]"></asp:SqlDataSource>
这种实用、方便写,再看下面这种
3、使用dataset或datareader绑定控件(以dataset为例)
SqlDataAdapter da = new SqlDataAdapter("select id,name from hy",conn);
DataSet ds = new DataSet();
da.Fill(ds);
conn.Close();
DropDownList1.DataSource = ds.Tables[0];
DropDownList1.DataTextField="name";
DropDownList1.DataValueField = "id";
DropDownList1.DataBind();
这种高级一点,或许还有一些方法,发现中;
二、而实际应用中,很多时候不是简单的一个绑定值那么简单,例如:当dropdownlist控件绑定值后,而你又希望指定初始值,就是显示的值,例子很多就不举了,下面是自己总结的几种方法(只放前后台主要代码):
第一种:
前台代码:
<asp:DropDownList ID="DropDownList1" runat="server" >
<asp:ListItem>张三</asp:ListItem>
<asp:ListItem>李四</asp:ListItem>
</asp:DropDownList>
后台代码:
DropDownList1.Item.Inset(0,"李四");//这是插入第一个值为李四;
DropDownList.Items.FindByValue("李四").selected = true;//这是调用findbyvalue方法指定初始值;
第二种:
前台代码:
<asp:DropDownListID="DropDownList1"runat="server"DataSourceID="SqlDataSource1"DataTextField="name"DataValueField="name">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings: ConnectionString %>"
SelectCommand="SELECT [name] FROM [yh]"></asp:SqlDataSource>
后台代码:
DropDownList1.SelectedValue = "李四"; //使用item方法貌似不行,会提示没有引入实例错误;
第三种:
前台代码:前面2种都可以;
后台代码:
DropDownList1.SelectedIndex = 1;//通过控件索引来指定,1代表第二个值;
其实还有一种,比较经常用到,实例说明:(在此直观的说明)
实例问题:绑定控件的值为id,但显示为name,同样首先指定默认值,通过选项,修改id;
区别:默认值是通过数据库数值或传的数据来指定的,而不是指定一个默认字符串;
解决方法:
1、前台代码:
<asp:DropDownList ID="DropDownList1" runat="server" >
<asp:ListItem>张三</asp:ListItem>
<asp:ListItem>李四</asp:ListItem>
</asp:DropDownList>
后台代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string yhid = Request.Params["userid"].ToString();
DropDownList1.Items.FindByValue(yhid).Selected= true;
}
}//这里只是简单阐述,如果是从dataset读出来的值,是一样的效果;
2、前台代码:
<asp:DropDownListID="DropDownList1"runat="server"DataSourceID="SqlDataSource1"DataTextField="name"DataValueField="id"> </asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings: ConnectionString %>"
SelectCommand="SELECT [id] [name] FROM [yh]"></asp:SqlDataSource>
后台代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string yhid = Request.Params["userid"].ToString();
DropDownList1.SelectedValue = yhid; }
}
3、或者可以通过sql语句直接读取id所对应的name,就可以直接使用赋值了:
三、DropDownList数据绑定第一项为空的方法
DropDownList1.DataSource = ds.Tab
les[0];
DropDownList1.DataTextField="name";
DropDownList1.DataValueField = "id";
DropDownList1.Items.Insert(0,new ListItem());
下面为备注说明:
selectedindex获得的是选定项的索引,索引值是从0开始.
selectedvalue是所有选择的值.
selecteditem.value是获取索引值最小的选定项.如果是多选的情况下,selectedvalue和selecteditem.value就有这么点差别.
selecteditem代表选定项,相当于一个对象,这个对象仍然会有其他的属性,比如checked,Attributes,value,而selectedvalue就是一个值,是一个字符串
- DropDownList控件
1.DropDownList控件 <asp:DropDownList runat="server" ID="DropDownList1" AutoPost ...
- DropDownList 控件不能触发SelectedIndexChanged 事件
相信DropDownList 控件不能触发SelectedIndexChanged 事件已经不是什么新鲜事情了,原因也无外乎以下几种: 1.DropDownList 控件的属性 AutoPostBac ...
- 三级联动---DropDownList控件
AutoPostBack属性:意思是自动回传,也就是说此控件值更改后是否和服务器进行交互比如Dropdownlist控件,若设置为True,则你更换下拉列表值时会刷新页面(如果是网页的话),设置为fl ...
- c#中DropDownList控件绑定枚举数据
c# asp.net 中DropDownList控件绑定枚举数据 1.枚举(enum)代码: private enum heros { 德玛 = , 皇子 = , 大头 = , 剑圣 = , } 如果 ...
- DropDownList控件学习
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- 客户端用JavaScript填充DropDownList控件 服务器端读不到值
填充没有任何问题,但是在服务器端却取不出来下拉表中的内容.页面代码如下. <form id="form1" runat="server"> < ...
- DropDownList 控件的SelectedIndexChanged事件触发不了
先看看网友的问题: 根据Asp.NET的机制,在html markup有写DropDownList控件与动态加载的控件有点不一样.如果把DropDownList控件写在html markup,即.as ...
- 在FooterTemplate内显示DropDownList控件
如果想在Gridview控件FooterTemplate内显示DropDownList控件供用户添加数据时所应用.有两种方法可以实现,一种是在GridView控件的OnRowDataBound事件中写 ...
- 《ASP.NET1200例》嵌套在DataLisT控件中的其他服务器控件---DropDownList控件的数据绑定
aspx <script type="text/javascript"> function CheckAll(Obj) { var AllObj = document. ...
随机推荐
- ms08-067
http://wenku.baidu.com/view/f473355077232f60ddcca119.html
- LA 3998 Prime k-tuple
题意:如果K个相邻素数p1,p2,p3.....pk满足pk-p1=s,称这些素数组成一个距离为s的素数K元组,输入a,b,k,s,输出区间[a,b]内距离为s的素数k元组的个数. 思路:先打到500 ...
- OPENFILER记下,有空再玩之,ISCSI,以后网络起来了,速度还是应该可以的
- 跨平台网络通信与服务器框架 acl 3.2.0 发布
acl 3.2.0 版本发布了,acl 是 one advanced C/C++ library 的简称,主要包括网络通信库以及服务器框架库等功能,支持 Linux/Windows/Solaris/F ...
- bzoj3192
把堆顶和堆顶接起来,然后用树状数组模拟即可不得不说一开始我竟然把100000*100000当成不超出longint 而忘开int64,无药可救…… ..] of longint; now,n1,n2, ...
- weblogic jsp 不生效解决方法
1. 检查weblogic.xml配置文件,其中如果有: <jsp-descriptor> <jsp-param> <param-name>pageCheckSec ...
- Elasticsarch及插件安装
Elasticsarch及插件安装 一.环境介绍与安装准备 1.环境说明 OS为Centos 6.5,elasticsearch-1.1.X.tar.gz, 注:mongo river ...
- maven src/test/resources 下的logback-test.xml 读取 properties文件中的key-value值
<profiles> <profile> <id>test-cd</id> <prope ...
- 360. Sort Transformed Array
一元二次方程...仿佛回到了初中. 主要看a的情况来分情况讨论: =0,一次函数,根据b的正负单调递增递减就行了. <0,凸状..从nums[]左右两边开始往中间一边比较一边 从右往左 放: 0 ...
- 理解Android的startservice和bindservice(转)
一.首先,让我们确认下什么是service? service就是android系统中的服务,它有这么几个特点:它无法与用户直接进行交互.它必须由用户或者其他程序显式的启动.它的优先级比较高,它比处于前 ...