dropdownlist控件绑定_dropdownlist控件联动

dropdownlist控件绑定_dropdownlist控件联动 也谈谈动态绑定dropdownlist CSDN 2004年7月31日 阅读:6428次   说来,很多的dropdownlist选项都不是固定的,是会动态改变的,一种方法是在页面上写死,改变时,直接修改页面就可以了。但是很多人是使用动

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

也谈谈动态绑定dropdownlist


CSDN 2004年7月31日 <script src=”http://www.jaron.cn/cms-server/ArticleViewTimes.asp?id=101512″></script>阅读:6428次  

说来,很多的dropdownlist选项都不是固定的,是会动态改变的,一种方法是在页面上写死,改变时,直接修改页面就可以了。但是很多人是使用动态绑定的,因此dropdownlist的Text和Value是需要动态生成的。

首先我们来创建一个表来存放DropDownList的菜单选项:

create table DDLItem –下拉菜单选项表

(

id int Identity Primary Key, –编号

ItemName varchar(20) –菜单名称

)

再在web.config里添加:

<appSettings>

<add key=”ConnectionString” value=”server=127.0.0.1;uid=sa;password=1234;database=smsc” />

appSettings>

一个最常用的方法就是用DataSet作为数据源来绑定Dropdownlist的值。

首先我们先在页面上加上一个DropDownList和一个Button,如图所示:

源代码如下:

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

using System.Configuration;

namespace BindDropDownList

{

///

/// Example1 的摘要说明。

///

public class Example1 : System.Web.UI.Page

{

protected System.Web.UI.WebControls.DropDownList DropDownList1;

protected System.Web.UI.WebControls.Button Button1;

private void Page_Load(object sender, System.EventArgs e)

{

// 在此处放置用户代码以初始化页面

}

#region Web Form Designer generated code

override protected void OnInit(EventArgs e)

{

//

// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。

//

InitializeComponent();

base.OnInit(e);

}

///

/// 设计器支持所需的方法 – 不要使用代码编辑器修改

/// 此方法的内容。

///

private void InitializeComponent()

{

this.Button1.Click += new System.EventHandler(this.Button1_Click);

this.Load += new System.EventHandler(this.Page_Load);

}

#endregion

private void Button1_Click(object sender, System.EventArgs e)

{

//取得Web.config里的数据库连接字串

string ConnString = ConfigurationSettings.AppSettings[“ConnectionString”];

//创建一个SqlConnection

SqlConnection Conn = new SqlConnection( ConnString );

string SQL_Select = “select id, ItemName from DDLItem order by id desc”;

//构造一个SqlDataAdapter

SqlDataAdapter myAdapter = new SqlDataAdapter( SQL_Select, Conn);

//开始读取数据

Conn.Open();

DataSet dataSet = new DataSet();

myAdapter.Fill( dataSet,”Table1″ );

Conn.Close();

//开始绑定DropDownList

//指定DropDownList使用的数据源

DropDownList1.DataSource = dataSet.Tables[“Table1”].DefaultView;

//指定DropDownList使用的表里的那些字段

DropDownList1.DataTextField = “ItemName”; //dropdownlist的Text的字段

DropDownList1.DataValueField = “id”;//dropdownlist的Value的字段

DropDownList1.DataBind();

}

}

}

效果图如下:

未绑定的

绑定后的

这个方法比较简单实用,可以灵活的指定一个表里的任意字段为DropDownList的Text和Value值。但是DataSet包含的其他属性太多,就是相当于一个脱机的数据库。因此说来,不是很赞成使用这个方法绑定DropDownList。

在我的《也谈谈动态绑定dropdownlist(1)》的文章里,(http://blog.csdn.net/zsxfbj/archive /2004/07/08/36659.aspx)提到了的是利用dataset作为数据源来实现dataset的Item绑定。但是DataSet包含的 内容和结构太多,我们只要求的是快速的绑定DropDownList的Item,而不对数据做任何的操作。所以说用DataSet做数据源的话,是不是有 些大材小用的感觉?

而且在用DataSet做为数据源的时候,我们要指定:

DropDownList1.DataTextField = “ItemName”; //dropdownlist的Text的字段

DropDownList1.DataValueField = “id”;//dropdownlist的Value的字段

这样的话,我们还要知道表的字段,这个方面不是很好。如果我们想在绑定一个叫Text为:All Item,Value为0的Item,用DataSet作为数据源时绑定会出现问题,我在绑定DropDownList1时,先指定上面我要加的Item项:

DropDownList1.Items.Add( new ListItem( “ALL Item”, “0” ) );//这里为新加代码

DropDownList1.DataSource = dataSet.Tables[“Table1”].DefaultView;

//指定DropDownList使用的表里的那些字段

DropDownList1.DataTextField = “ItemName”; //dropdownlist的Text的字段

DropDownList1.DataValueField = “id”;//dropdownlist的Value的字段

DropDownList1.DataBind();

编译后生成的页面的代码:

<select name=”DropDownList1” id=”DropDownList1”>

<option value=”5”>Item5</option>

<option value=”4”>Item4</option>

<option value=”3”>Item3</option>

<option value=”2”>Item2</option>

<option value=”1”>Item1</option>

</select>

新加的All Item这项根本没有。如果发在后面呢?

//指定DropDownList使用的数据源

//DropDownList1.Items.Add( new ListItem( “ALL Item”, “0” ) );//新加的代码

DropDownList1.DataSource = dataSet.Tables[“Table1”].DefaultView;

//指定DropDownList使用的表里的那些字段

DropDownList1.DataTextField = “ItemName”; //dropdownlist的Text的字段

DropDownList1.DataValueField = “id”;//dropdownlist的Value的字段

DropDownList1.DataBind();

DropDownList1.Items.Add( new ListItem( “ALL Item”, “0” ) );//新加的代码

编译后的页面的代码为:

<select name=”DropDownList1″ id=”DropDownList1″>

<option value=”5″>Item5</option>

<option value=”4″>Item4</option>

<option value=”3″>Item3</option>

<option value=”2″>Item2</option>

<option value=”1″>Item1</option>

<option value=”0″>ALL Item</option>

</select>

好像<option value=”0″>ALL Item</option>这项有了,但是是放在了最下面,这又不符合我们的一般的习惯。那么怎么办呢?

既然,DropDownList1.Items可以Add一个new ListItem,而且DataSet做数据源太浪费,我们又不对数据做任何修改,那么我们只是Read一下就可以了。下面就看看这段代码:

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;

using System.Configuration;

namespace BindDropDownList

{

/// <summary>

/// Example2 的摘要说明。

/// </summary>

public class Example2 : System.Web.UI.Page

{

protected System.Web.UI.WebControls.DropDownList DropDownList1;

protected System.Web.UI.WebControls.Button Button1;

private void Page_Load(object sender, System.EventArgs e)

{

// 在此处放置用户代码以初始化页面

}

#region Web Form Designer generated code

override protected void OnInit(EventArgs e)

{

//

// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。

//

InitializeComponent();

base.OnInit(e);

}

/// <summary>

/// 设计器支持所需的方法 – 不要使用代码编辑器修改

/// 此方法的内容。

/// </summary>

private void InitializeComponent()

{

this.Button1.Click += new System.EventHandler(this.Button1_Click);

this.Load += new System.EventHandler(this.Page_Load);

}

#endregion

private void Button1_Click(object sender, System.EventArgs e)

{

//取得Web.config里的数据库连接字串

string ConnString = ConfigurationSettings.AppSettings[“ConnectionString”];

//创建一个SqlConnection

SqlConnection Conn = new SqlConnection( ConnString );

string SQL_Select = “select id, ItemName from DDLItem order by id desc”;

//创建一个SqlCommand

SqlCommand myCommand = new SqlCommand( SQL_Select, Conn );

//读取数据记录并绑定

myCommand.Connection.Open();

//使用DataReader读取速度更快

SqlDataReader myReader = myCommand.ExecuteReader();

while ( myReader.Read() )

{

DropDownList1.Items.Add( new ListItem( myReader[“ItemName”].ToString(),myReader[“id”].ToString() ) );//增加Item

//或者这样也能绑定,

//DropDownList1.Items.Add( new ListItem( myReader[1].ToString(),myReader[0].ToString() ) );//增加Item

//都是要在知道Sql语句或者数据表结构的前提下才能这样绑定

}

myCommand.Connection.Close();

}

}

}

编译运行后,效果一样,但是更节省了系统的开销。而且我们也可以方面的添加特别的Item,比如这样:

private void Button1_Click(object sender, System.EventArgs e)

{

DropDownList1.Items.Add( new ListItem( “ALL Item”, “0” ) );//新加一个Item

//取得Web.config里的数据库连接字串

string ConnString = ConfigurationSettings.AppSettings[“ConnectionString”];

//创建一个SqlConnection

SqlConnection Conn = new SqlConnection( ConnString );

string SQL_Select = “select id, ItemName from DDLItem order by id desc”;

//创建一个SqlCommand

SqlCommand myCommand = new SqlCommand( SQL_Select, Conn );

//读取数据记录并绑定

myCommand.Connection.Open();

//使用DataReader读取速度更快

SqlDataReader myReader = myCommand.ExecuteReader();

while ( myReader.Read() )

{

DropDownList1.Items.Add( new ListItem( myReader[“ItemName”].ToString(),myReader[“id”].ToString() ) );//增加Item

//或者这样也能绑定,

//DropDownList1.Items.Add( new ListItem( myReader[1].ToString(),myReader[0].ToString() ) );//增加Item

//都是要在知道Sql语句或者数据表结构的前提下才能这样绑定

}

myCommand.Connection.Close();

}

编译后的页面代码为:

<select name=”DropDownList1″ id=”DropDownList1″>

<option value=”0″>ALL Item</option>

<option value=”5″>Item5</option>

<option value=”4″>Item4</option>

<option value=”3″>Item3</option>

<option value=”2″>Item2</option>

<option value=”1″>Item1</option>

</select>

我们目的就可以灵活的达到了。

所以说使用SqlDataReader加Add ListItem可以更快的绑定DropDownList。但是DataSet也可以想这样的绑定DropDownList:

private void Button1_Click(object sender, System.EventArgs e)

{

//取得Web.config里的数据库连接字串

string ConnString = ConfigurationSettings.AppSettings[“ConnectionString”];

//创建一个SqlConnection

SqlConnection Conn = new SqlConnection( ConnString );

string SQL_Select = “select id, ItemName from DDLItem order by id desc”;

//构造一个SqlDataAdapter

SqlDataAdapter myAdapter = new SqlDataAdapter( SQL_Select, Conn);

//开始读取数据

Conn.Open();

DataSet dataSet = new DataSet();

myAdapter.Fill( dataSet,”Table1″ );

Conn.Close();

//开始绑定DropDownList

DataTable dataTable = dataSet.Tables[“Table1”];

foreach( DataRow dataRow in dataTable.Rows )

{

DropDownList1.Items.Add( new ListItem( dataRow[1].ToString(), dataRow[0].ToString() ) );

}

// //指定DropDownList使用的数据源

// //DropDownList1.Items.Add( new ListItem( “ALL Item”, “0” ) );//新加的代码

// DropDownList1.DataSource = dataSet.Tables[“Table1”].DefaultView;

// //指定DropDownList使用的表里的那些字段

// DropDownList1.DataTextField = “ItemName”; //dropdownlist的Text的字段

// DropDownList1.DataValueField = “id”;//dropdownlist的Value的字段

// DropDownList1.DataBind();

// DropDownList1.Items.Add( new ListItem( “ALL Item”, “0” ) );//新加的代码

}

当然,怎么绑定DropDownList都是个人喜好的问题了,这个都是属于编程技巧的范围了。呵呵,希望大家能一起交流编程的技巧和经验

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184506.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Sublime Text3 如何安装、删除及更新插件

    Sublime Text3 如何安装、删除及更新插件1、打开SublimeText3,按Ctrl+`(和qq输入法快捷切换冲突,可以修改qq的输入法切换热键)2、复制粘黏以下代码添加至命令行,然后回车(功能:安装插件的工具,有了它,以后安装其他插件更方便)importurllib.request,os;pf=’PackageControl.sublime-package’;ipp=sublime.inst…

    2022年7月11日
    23
  • JVM内存管理及GC机制[通俗易懂]

    JVM内存管理及GC机制[通俗易懂]一、概述JavaGC(GarbageCollection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。经过这么长时间的发展,JavaGC…

    2022年5月2日
    40
  • java outputstream转为inputstream(java传递流)

    本文转自 https://blog.csdn.net/lmy86263/article/details/60479350在Java中InputStream和String之间的转化十分普遍,本文主要是总结一下转换的各种方法,包括JDK原生提供的,还有一些外部依赖提供的。1、InputStream转化为String1.1JDK原生提供方法一:byte[]bytes=newbyt…

    2022年4月16日
    77
  • curl的速度为什么比file_get_contents快以及具体原因

    curl的速度为什么比file_get_contents快以及具体原因

    2022年2月10日
    53
  • iocomp-Crack|New Version最新【2021】「建议收藏」

    iocomp-Crack|New Version最新【2021】「建议收藏」使用IocompComponents5.0以上能够助程序员开发出逼真的工控仪表和工控图表,让程序开发不再消耗时间和精力,有了这个控件不仅能节约开发时间,而且还降低了项目风险,最重要的是第三方控件写的程序更专业,工控图表图像更精细。他们用于生成具有专家级外观的仪器控件,并能紧密整合到Microsoft’s.NETFramework之中。您无需辛苦的在属性窗口中寻找该属性,其自定义的属性编辑器提供了简单快速的属性配置方法。Ultra控件包提供了70种专家级控件以及绘图控件包组件非常强大的

    2022年7月25日
    12
  • YUI中js的继承示例

    YUI中js的继承示例无标题文档一个简单的例子。在这个例子中,可以看到,用var定义的私有变量,是不能被继承的。所有能被继承的,一定是通过this关键字,在内在地址中和这个对象的地址捆在一起的变量。因为复合对象传的不是值

    2022年7月4日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号