DropDownList 控件

今天打算学习下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就是一个值,是一个字符串

时间: 2024-10-20 00:16:03

DropDownList 控件的相关文章

FormView的插入模板中的DropDownList控件参数

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DT

DropDownList控件

1.DropDownList控件 <asp:DropDownList runat="server" ID="DropDownList1" AutoPostBack="true" OnSelectedIndexChanged="DropDownList_SelectedIndexChanged"></asp:DropDownList> public partial class _Default : Sys

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

c# asp.net 中DropDownList控件绑定枚举数据 1.枚举(enum)代码: private enum heros { 德玛 = 0, 皇子 = 10, 大头 = 20, 剑圣 = 30, } 如果不为枚举数列表中的元素指定值,则它们的值将自动递增,从1开始. 2.cs代码: private void LoadData() { //检索枚举heros返回包含每个成员的值的数组 Array herosArray = Enum.GetValues(typeof(heros)); fo

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

填充没有任何问题,但是在服务器端却取不出来下拉表中的内容.页面代码如下. <form id="form1" runat="server"> <div> <h3>看看用js填充的dropdownlist控件在服务器端能读出来吗?</h3> 三个级联下拉列表框: <asp:DropDownList runat="server" id="bigTypeList" Width=&q

webform复合控件以及用来做年月日选择日期的DropDownList控件

自动提交(不用刷新)的属性: AutoPostBack="True" 1.RadioButtonList     单选集合 -属性:RepeatDirection:Vertical (垂直排布)/Horizontal (横向排布) RepeatLayout:Table (表格排布方式)/Flow (span排布方式) RepeatColumns:         设置为多少列. 每一个单选按钮都是一个ListItem对象,他有  Enable(是否可用).  selected(默认选中

DropDownList 控件不能触发SelectedIndexChanged 事件

相信DropDownList 控件不能触发SelectedIndexChanged 事件已经不是什么新鲜事情了,原因也无外乎以下几种: 1.DropDownList 控件的属性 AutoPostBack="True" 没有写: 2.DropDownList 控件的数据绑定没有放在if (!Page.IsPostBack) 里面: 3.DropDownList 控件选定项的value 值只有在发生变化时,才将信息发往服务器: 有人问 (1)AutoPostBack="True&

DropDownList 控件的SelectedIndexChanged事件触发不了

先看看网友的问题: 根据Asp.NET的机制,在html markup有写DropDownList控件与动态加载的控件有点不一样.如果把DropDownList控件写在html markup,即.aspx网页,网友的代码是没有问题的.但是,如果是在.aspx.cs动态加载的控件,那就不能使用Page_Load事件内加载,如果以此加载,就算是使用AutoPostBack = true也没有效果.正确做法是在Page_Init事件中加载. 下面动态实时操作中,首先是运行网友的代码,确定无法运行.然后

如何给DropDownList控件设置样式(ASP.NET MVC)

前话: 应学校领导要求,要给后台管理系统添加一个搜索功能,提供可选择选项.我选择使用DropDownList去实现,熟悉.net控件的都知道,DropDownList的样子非常丑,不论是边框长宽还是里面的下拉三角形,都给人很不舒服的感觉,作为一个爱美的女生,怎么可能容忍呢!!! 问题描述: 然后就开始各种查资料找解决方法,先贴没有美化的样子 下拉框的长度是根据选择项里长度最大的文本决定的,这样真的很丑有没有! 下面是代码, <li class="list-group-item"&

DropDownList控件:两级联动--【Asp.Net】

最近学习Asp.Net,发现很多控件都很有意思,例如:Canlender,AdRotator等.以前只知道有这样的页面效果,但是对这些控件了解并不多.不怕不知道,就怕不知道. DropDownList,两级联动,做这个demo的时候,让我又爱又恨. 一开始的时候,自己就草草的建立了一个Fresh的数据库,建立了一个Student表如下图所示: 在页面上面放了两个DropDownList,两个SqlDataSource.如下图所示: 下面就需要通过SqlDataSource设置数据源,让DropD