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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • imread怎么读取图片_opencv读不到图片

    imread怎么读取图片_opencv读不到图片Matimage_source=imread(“D:\program\xie.png”)直接放入图片的绝对路径只需要把图像文件放在工程文件夹下和.cpp文件放在一起就行了,读取的时候就可以直接用名字读取,如imread(“miao.jpg”);src=imread(argv[1],1);方法是:工程——属性——配置属性——调试——命令行参数,然后设置就行了。argv[1…

    2022年10月14日
    2
  • 系统首选dns服务器修改,如何在Windows系统中设置首选DNS「建议收藏」

    系统首选dns服务器修改,如何在Windows系统中设置首选DNS「建议收藏」有时候可能需要修改或者调整DNS服务器地址的设置,以达到优化网络连接速度的效果。那么如何在Windows系统中设置首选DNS呢?具体请看下面学习啦小编介绍的操作方法!在Windows系统中设置首选DNS的方法这里Windows8为例,首先在屏幕的右下角找到“网络连接”图标,在“网络连接”图标上点击鼠标右键,然后选择“打开网络和共享中心”,接下来在“网络和共享中心”窗口中点击左侧的“更改适…

    2022年6月1日
    51
  • python命名规则标识符_python中有效的标识符

    python命名规则标识符_python中有效的标识符标识符规则1、由大小写字母、数字和下划线组成,只能以字母或者下划线开头。2、不能高阔除下划线以外的其他热河字符,如%……%¥#@3、不能包含换行符、空格和制表符等空白字符。4、不能使用Python中的关键字和约定俗成的名称,如print5、Python区分大小写。…

    2025年10月13日
    5
  • 用LM方法的matlab求解,matlab中LM算法「建议收藏」

    用LM方法的matlab求解,matlab中LM算法「建议收藏」symsabyxreal;f=a*exp(-b*x);Jsym=jacobian(f,[ab]);%拟合用数据。参见《数学试验》,p190,例2data_1=[0.250.511.523468];obs_1=[19.2118.1515.3614.1012.899.327.455.243.01];%2.LM算法%初始猜测sa0=10;b0=0.5…

    2022年10月1日
    3
  • 实战模拟│JWT 登录认证「建议收藏」

    实战模拟│JWT 登录认证「建议收藏」分布式跨域认证的解决新方案

    2022年8月16日
    6
  • 基于AX88796B的网络接口模块的设计与实现[通俗易懂]

    基于AX88796B的网络接口模块的设计与实现[通俗易懂] 基于AX88796B的网络接口模块的设计与实现[日期:2008-7-22]来源:今日电子/21IC 作者:重庆邮电大学崔巍[字体:大中小]  引言网络技术应用日益普及的今天,工业现场的仪器仪表、数据采集和控制设备也日趋网络化,工业自动化和网络的结合越来越密切。而将以太网和嵌入式系统相结合应用于工业控制中已成为趋势。AX8

    2022年6月10日
    33

发表回复

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

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