今天打算学习下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控件

    1.DropDownList控件 <asp:DropDownList runat="server" ID="DropDownList1" AutoPost ...

  2. DropDownList 控件不能触发SelectedIndexChanged 事件

    相信DropDownList 控件不能触发SelectedIndexChanged 事件已经不是什么新鲜事情了,原因也无外乎以下几种: 1.DropDownList 控件的属性 AutoPostBac ...

  3. 三级联动---DropDownList控件

    AutoPostBack属性:意思是自动回传,也就是说此控件值更改后是否和服务器进行交互比如Dropdownlist控件,若设置为True,则你更换下拉列表值时会刷新页面(如果是网页的话),设置为fl ...

  4. c#中DropDownList控件绑定枚举数据

    c# asp.net 中DropDownList控件绑定枚举数据 1.枚举(enum)代码: private enum heros { 德玛 = , 皇子 = , 大头 = , 剑圣 = , } 如果 ...

  5. DropDownList控件学习

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  6. 客户端用JavaScript填充DropDownList控件 服务器端读不到值

    填充没有任何问题,但是在服务器端却取不出来下拉表中的内容.页面代码如下. <form id="form1" runat="server"> < ...

  7. DropDownList 控件的SelectedIndexChanged事件触发不了

    先看看网友的问题: 根据Asp.NET的机制,在html markup有写DropDownList控件与动态加载的控件有点不一样.如果把DropDownList控件写在html markup,即.as ...

  8. 在FooterTemplate内显示DropDownList控件

    如果想在Gridview控件FooterTemplate内显示DropDownList控件供用户添加数据时所应用.有两种方法可以实现,一种是在GridView控件的OnRowDataBound事件中写 ...

  9. 《ASP.NET1200例》嵌套在DataLisT控件中的其他服务器控件---DropDownList控件的数据绑定

    aspx <script type="text/javascript"> function CheckAll(Obj) { var AllObj = document. ...

随机推荐

  1. ms08-067

    http://wenku.baidu.com/view/f473355077232f60ddcca119.html

  2. LA 3998 Prime k-tuple

    题意:如果K个相邻素数p1,p2,p3.....pk满足pk-p1=s,称这些素数组成一个距离为s的素数K元组,输入a,b,k,s,输出区间[a,b]内距离为s的素数k元组的个数. 思路:先打到500 ...

  3. OPENFILER记下,有空再玩之,ISCSI,以后网络起来了,速度还是应该可以的

  4. 跨平台网络通信与服务器框架 acl 3.2.0 发布

    acl 3.2.0 版本发布了,acl 是 one advanced C/C++ library 的简称,主要包括网络通信库以及服务器框架库等功能,支持 Linux/Windows/Solaris/F ...

  5. bzoj3192

    把堆顶和堆顶接起来,然后用树状数组模拟即可不得不说一开始我竟然把100000*100000当成不超出longint 而忘开int64,无药可救…… ..] of longint; now,n1,n2, ...

  6. weblogic jsp 不生效解决方法

    1. 检查weblogic.xml配置文件,其中如果有: <jsp-descriptor> <jsp-param> <param-name>pageCheckSec ...

  7. Elasticsarch及插件安装

    Elasticsarch及插件安装 一.环境介绍与安装准备 1.环境说明 OS为Centos 6.5,elasticsearch-1.1.X.tar.gz,         注:mongo river ...

  8. maven src/test/resources 下的logback-test.xml 读取 properties文件中的key-value值

    <profiles>        <profile>            <id>test-cd</id>            <prope ...

  9. 360. Sort Transformed Array

    一元二次方程...仿佛回到了初中. 主要看a的情况来分情况讨论: =0,一次函数,根据b的正负单调递增递减就行了. <0,凸状..从nums[]左右两边开始往中间一边比较一边 从右往左 放: 0 ...

  10. 理解Android的startservice和bindservice(转)

    一.首先,让我们确认下什么是service? service就是android系统中的服务,它有这么几个特点:它无法与用户直接进行交互.它必须由用户或者其他程序显式的启动.它的优先级比较高,它比处于前 ...