DropDownList详解

DropDownList详解在.net中,DropDownList和ListBox是最常用的两个LIST控件,我的学习笔记也从这里开始吧!一、DropDownList命名空间:System.Web.UI.WebControls程序集:System.Web(在system.web.dll中)一些常用的属性:DataMember当数据源包含多个不同的数据项列表时,获取或设置数据绑定控件绑定到的数据列表的

大家好,又见面了,我是你们的朋友全栈君。


在.net中,DropDownList和ListBox是最常用的两个LIST控件,我的学习笔记也从这里开始吧!
一、DropDownList
命名空间:System.Web.UI.WebControls
程序集:System.Web(在 system.web.dll 中)

一些常用的属性:
DataMember 当数据源包含多个不同的数据项列表时,获取或设置数据绑定控件绑定到的数据列表的名称。(从 DataBoundControl 继承。)

DataSource 获取或设置对象,数据绑定控件从该对象中检索其数据项列表。(从 BaseDataBoundControl 继承。) 

DataSourceID 获取或设置控件的 ID,数据绑定控件从该控件中检索其数据项列表。(从 DataBoundControl 继承。) 

DataTextField 获取或设置为列表项提供文本内容的数据源字段。(从 ListControl 继承。) 

DataTextFormatString 获取或设置格式化字符串,该字符串用来控制如何显示绑定到列表控件的数据。(从 ListControl 继承。) 

DataValueField 获取或设置为各列表项提供值的数据源字段。(从 ListControl 继承。) 

Items 获取列表控件项的集合。(从 ListControl 继承。)

SelectedIndex 已重写。获取或设置 DropDownList 控件中的选定项的索引。 

SelectedItem 获取列表控件中索引最小的选定项。(从 ListControl 继承。如果列表控件只允许一个选项,则使用此属性可获取选定项的各个属性。如果列表控件允许多个选项,则使用此属性可获取列表控件中索引最小的选定项的属性。
) 

SelectedValue 获取列表控件中选定项的值,或选择列表控件中包含指定值的项。(从 ListControl 继承。) 

Text 获取或设置 ListControl 控件的 SelectedValue 属性。(从 ListControl 继承。) 

公共方法:

DataBind 已重载。 将数据源绑定到被调用的服务器控件及其所有子控件。 (从 BaseDataBoundControl 继承。) 

FindControl 已重载。 在当前的命名容器中搜索指定的服务器控件。 (从 Control 继承。) 

GetType 获取当前实例的 Type。 (从 Object 继承。) 

公共事件
SelectedIndexChanged 当列表控件的选定项在信息发往服务器之间变化时发生。(从 ListControl 继承。) 

TextChanged 当 Text 和 SelectedValue 属性更改时发生。(从 ListControl 继承。) 


下面向大家分享我在网站设计中用到dropdownlist的一些经验和网上看到的个人觉得对我有所指点的代码,上传的附件为都自己所写,比较简单,但比较全,包括数据库sqldatasource与dropdownlist,gridview的应用,



DropDown
List 详解




DropDownList 控件用于创建下拉列表。DropDownList 控件中的每个可选项都是由 ListItem 元素定义的!


提示:该控件支持数据绑定!


DropDownList 控件是一个下拉式的选单,功能和 RadioButtonList Web控件很类似,提供用户在一群选项中选择一个;不过RadioButtonList Web控件适合使用在较少量的选项群组项目,而DropDownList Web 控件则适合用来管理大量的选项群组项目。




一、DropDownList 控件属性




1、AutoPostBack属性:用于设置当改变选项内容时,,是否自动回送到服务器。True表示回送;False(默认)表示不回送。


2、DataSource属性:用于指定填充列表控件的数据源。


3、DataTextField属性:用于指定DataSource中的一个字段,该字段的值对应于列表项的Text属性。


4、 DataValueField属性:用于指定DataSource中的一个字段,该字段的值对应于列表项的Value属性。


5、Items属性:表示列表中各个选项的集合,如DropDownList.Items(i)


表示第i个选项,i从0开始。每个选项都有以下3个基本属性:


Text 属性:表示每个选项的文本。


Value属性:表示每个选项的选项值。


Selected属性:表示该选项是否被选中。


Count属性:通过Items.Count属性可获得DropDownList控件的选项数;


Add方法:通过items.Add方法可以向 DropDownList控件添加选项;


Remove方法:通过items.Remove方法,可从DropDownList控件中删除指定的选项;


Insert方法:通过items.insert方法,可将一个新的选项插入到DropDownList控件中;


Clear方法:通过items.clear方法可以清空DropDownList控件中的选项。


6、SelectedIndex属性:用于获取下拉列表中选项的索引值。如果未选定任何项,则返回值-1(负1)。


7、SelectedItem属性:用于获取列表中的选定项。通过该属性可获得选定项的Text 和Value属性值。


8、SelectedValue属性:用于获取下拉列表中选定项的值。


9、 SelectedIndexchanged事件:当用户选择了下拉列表中的任意选项时,都将引发SelectedIndexChanged事件。




二、使用语法

代码
<ASP:DropDownList

 
 
Id=”控件名称”

 
 
Runat=”Server”

 
 
 False”

 
 
DataSource=”<%数据源%>”

 
 
DataTextField=”数据源的字段”

 
 
DataValueField=”数据源的字段”

 
 
OnSelectedIndexChanged=”事件程序名称”

>

 
 
<ASP:ListItem/>

</ASP:DropDownList>





一次性在同一个table绑定多个DropDownlist,并且去掉重复项(即代替distinct),从而提高性能。
收藏

代码
private void BindDropDownList(DropDownList ddl2, DropDownList ddl3, DropDownList ddl4, DropDownList ddl5)

 
 
 
 
{

 
 
 
 
 
 
 
 
string conn = cs.GetDsn();

 
 
 
 
 
 
 
 
SqlConnection cn = new SqlConnection(conn);

 
 
 
 
 
 
 
 
string strSqlDDL = “select Country,CustName, Substring(CONVERT(varchar(100), ActInstDate, 101),1,2) ActInstDate,ResellerName from 
 
tbcalicoinfo where surveystatus=’Completed'”;

 
 
 
 
 
 
 
 
DataSet ds = new DataSet();

 
 
 
 
 
 
 
 
SqlDataAdapter da = new SqlDataAdapter(strSqlDDL, cn);

 
 
 
 
 
 
 
 
cn.Open();

 
 
 
 
 
 
 
 
da.Fill(ds, “tbcalicoinfo”);

 
 
 
 
 
 
 
 
DataTable dt = new DataTable(); 
 
 
 
 
 


 
 
 
 
 
 
 
 
ds.Tables[“tbcalicoinfo”].DefaultView.RowFilter = “country is not null”;//RowFilter 过滤

 
 
 
 
 
 
 
 
ds.Tables[“tbcalicoinfo”].DefaultView.Sort = “country asc”; 
 
//Sort 排序

 
 
 
 
 
 
 
 
ddl2.DataSource = ds.Tables[“tbcalicoinfo”].DefaultView.ToTable(true, “country”);// ToTable去重复

 
 
 
 
 
 
 
 
ddl2.DataTextField = “country”;

 
 
 
 
 
 
 
 
ddl2.DataBind();

 
 
 
 
 
 
 
 
ddl2.Items.Insert(0, new ListItem(“–All–“, “All”));

 
 
 
 
 
 
 
 
ds.Tables[“tbcalicoinfo”].DefaultView.RowFilter = “ActInstDate is not null”;

 
 
 
 
 
 
 
 
ds.Tables[“tbcalicoinfo”].DefaultView.Sort = “ActInstDate asc”;

 
 
 
 
 
 
 
 
ddl3.DataSource = ds.Tables[“tbcalicoinfo”].DefaultView.ToTable(true, “ActInstDate”);;

 
 
 
 
 
 
 
 
ddl3.DataTextField = “ActInstDate”;

 
 
 
 
 
 
 
 
ddl3.DataBind();

 
 
 
 
 
 
 
 
ddl3.Items.Insert(0, new ListItem(“–All–“, “All”));

 
 
 
 
 
 
 
 
//DataRow[] dr2 = dt.Select(“ResellerName is not null”,”ResellerName asc”);

 
 
 
 
 
 
 
 
ds.Tables[“tbcalicoinfo”].DefaultView.RowFilter = “ResellerName is not null”;

 
 
 
 
 
 
 
 
ds.Tables[“tbcalicoinfo”].DefaultView.Sort = “ResellerName asc”;

 
 
 
 
 
 
 
 
ddl4.DataSource = ds.Tables[“tbcalicoinfo”].DefaultView.ToTable(true, “ResellerName”);

 
 
 
 
 
 
 
 
ddl4.DataTextField = “ResellerName”;

 
 
 
 
 
 
 
 
ddl4.DataBind();

 
 
 
 
 
 
 
 
ddl4.Items.Insert(0, new ListItem(“–All–“, “All”));

 
 
 
 
 
 
 
 
ds.Tables[“tbcalicoinfo”].DefaultView.RowFilter = “CustName is not null”;

 
 
 
 
 
 
 
 
ds.Tables[“tbcalicoinfo”].DefaultView.Sort = “CustName asc”;

 
 
 
 
 
 
 
 
ddl5.DataSource = ds.Tables[“tbcalicoinfo”].DefaultView.ToTable(true, “CustName”);

 
 
 
 
 
 
 
 
ddl5.DataTextField = “CustName”;

 
 
 
 
 
 
 
 
ddl5.DataBind();

 
 
 
 
 
 
 
 
ddl5.Items.Insert(0, new ListItem(“–All–“, “All”));

 
 
 
 
 
 
 
 
cn.Close();

 
 
 
 
}







实现DropDownList无刷新二级联动


一、数据库设计:


字段名 数据类型 说明


ClassID 自动编号 类编号


ClassName varchar(8) 类名


UpClassID int(4) 上级类编号


ClassLevel int(4) 类级别,1为大类,2为小类


二涉及代码


1、首先,我们新建一个页面DropTest.aspx,在其中放入两个DropDownList控件:DropDownList1和DropDownList2,其完整代码如下:


页面设计代码

代码
<%@ Page language=”c#” Codebehind=”DropTest.aspx.cs” Inherits=”studyWEB.DropTest” %>

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN” >

<HTML>

<HEAD>

<title>WebForm2</title>

<meta content=”Microsoft Visual Studio .NET 7.1″ name=”GENERATOR”>

<meta content=”C#” name=”CODE_LANGUAGE”>

<meta content=”JavaScript” name=”vs_defaultClientScript”>

<meta content=”http://schemas.microsoft.com/intellisense/ie5″; name=”vs_targetSchema”>

<script>

function load(ClassID){ //ClassID为接收传递的大类编号

var drp2 = document.getElementByIdx_x(“DropDownList2”);

function RemoveAll(oElem) { //清除DropDownList2的所有项

var i = 0;

for (i = oElem.length; i >= 0; i–){

oElem.options.remove(i);

}

}

RemoveAll(drp2)

var oHttpReq = new ActiveXObject(“MSXML2.XMLHTTP”);

var oDoc = new ActiveXObject(“MSXML2.DOMDocument”);

oHttpReq.open(“POST”, “DropChild.aspx?ClassID=”+ClassID, false); //调用读取小类数据的页面,将大类

// 编号值传递过去

oHttpReq.send(“”);

result = oHttpReq.responseText;

oDoc.loadXML(result);

items1 = oDoc.selectNodes(“//CLASSNAME/Table/ClassName”); //读取所有请求大类所属小类的类名

items2 = oDoc.selectNodes(“//CLASSNAME/Table/ClassID”); //读取所有请求大类所属小类的编号

var itemsLength=items1.length;

for(i=0;i<itemsLength;i++) //将小类的类名和编号赋予DropDownList2

{

var newOption = document.createElement_x(“OPTION”);

newOption.text=items1[i].text;

newOption.value=items2[i].text;

drp2.options.add(newOption);

}

}

</script>

</HEAD>

<body MS_POSITIONING=”flowLayout”>

<form id=”Form1″ method=”post” runat=”server”>

<asp:DropDownList id=”DropDownList1″ runat=”server”></asp:DropDownList>

<asp:DropDownList id=”DropDownList2″ runat=”server”></asp:DropDownList>

<asp:TextBox id=”TH” runat=”server” BorderStyle=”None” ForeColor=”White” BorderColor=”White”></asp:TextBox>

<asp:Label id=”Label1″ runat=”server”></asp:Label>

<asp:Button id=”Button1″ runat=”server” Text=”Button”></asp:Button>

</form>

</body>

</HTML>



该页面的后台文件(DropDownList1.aspx.cs)中 Page_Load内的代码如下:

代码

pageload代码

if(!this.IsPostBack)

{

SqlConnection con = new SqlConnection(“server=localhost;database=gswebDB;uid=sa;pwd=;”);

SqlDataAdapter da = new SqlDataAdapter(“select ClassName,ClassID from classname where ClassLevel=1”,con);

DataSet ds = new DataSet();

da.Fill(ds);

this.DropDownList1.DataSource=ds.Tables[0].DefaultView;

this.DropDownList1.DataTextField = “ClassName”;

this.DropDownList1.DataValueField = “ClassID”;

this.DropDownList1.DataBind();

this.DropDownList1.Attributes.Add(“onchange”,”load(this.options[this.selectedIndex].value)”); //将ClassID作为参数传递给脚本函数load(ClassID),如果要传递的是ClassName,应将value改为innerText,但如果大类为中文,则调用小类时出现无法显示的问题

// this.DropDownList2.Attributes.Add(“onChange”,”javascript:document.Form1.TH.value=this.options[this.selectedIndex].value;”); //读取DropDownList2的值,将其赋给一个TextBox控件TH,以获取DropDownList2的值,



此页面实现如下功能:首先从数据库内读取所有类级别为1(即大类)的类名和类编号,绑定到DropDownList1控件上;然后通过 DropDownList1的Attributes属性调用javascript函数load(ClassID);load()函数通过调用 DropChild.aspx页面,读取XML流,得到大类所属小类的ClassName和ClassID。


2、新建 DropChild.aspx页面文件,其中不插入任何控件和文本,只在其后台文件(DropChild.aspx.cs)中的Page_Load中加入以下代码:

代码
if(this.Request[“ClassID”]!=null)

{

int state = Convert.ToInt32(this.Request[“ClassID”]);

SqlConnection con = new SqlConnection(“server=localhost;database=gswebDB;uid=sa;pwd=;”);

SqlDataAdapter da = new SqlDataAdapter(“select ClassName,ClassID from classname where UpClassID='”+state+”‘”,con);

DataSet ds = new DataSet(“CLASSNAME”);

da.Fill(ds);

XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, Response.ContentEncoding);

writer.Formatting = Formatting.Indented;

writer.Indentation = 4;

writer.IndentChar = ‘ ‘;

ds.WriteXml(writer);

writer.Flush();

Response.End();

writer.Close();





该方法得到用户选择的大类的编号,通过查询以后得到一个DataSet对象,使用该对象的WriteXML方法直接将内容写到 Response.OutputStream里面然后传递到客户端,客户端的load方法通过result =oHttpReq.responseText;句话得到一个XML字符串,最后解析此串。


另外,测试获取DropDownList2值,添加了TextBox控件TH,当点击Button时,处理事件代码如下:

代码

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

{

Label1.Text=TH.Text;

}



次方法为转载,对我有所指点,分享给大家

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/161266.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 聊聊系统平均负载_什么是负载敏感系统

    聊聊系统平均负载_什么是负载敏感系统一、什么是平均负载单位时间内,系统处于可运行状态和不可中断状态的进程数,可简单理解为系统平均活跃进程数可运行状态:top命令状态为R,包括Runnable和Running不可中断状态:top命令状态为D,正处于内核态关键流程中的进程,并且这些流程是不可打断的,比如等待硬件设备的I/O响应,这往往是对数据一致性的一种保护机制二、如何查看平均负载$uptime…,loada…

  • python爬虫–验证码、cookie

    python爬虫–验证码、cookie

  • 二项式分布和超几何分布有什么区别_多项分布的协方差

    二项式分布和超几何分布有什么区别_多项分布的协方差原文转自:http://hi.baidu.com/leifenglian/item/636198016851cee7f55ba652一、前言参数估计是一个重要的话题。对于典型的离散型随机变量分布:二项式分布,多项式分布;典型的连续型随机变量分布:正态分布。他们都可以看着是参数分布,因为他们的函数形式都被一小部分的参数控制,比如正态分布的均值和方差,二项式分布事件发生的概

  • 记念刘和珍君是什么文体_纪念原版

    记念刘和珍君是什么文体_纪念原版转载自Tony2009年12月15日19:48阅读(6)评论(0)分类:休闲搞笑权限:公开刚和蘑菇头在安中楼楼下聊天,忽闻VeryCD被封的消息,网上骂声一片,满腔愤慨无处发泄,遂成此文。鲁迅先生先知,如今中国的种种奇景,先生几十年前便已洞悉一切。———————————————…

  • SPSS中如何进行快速聚类分析「建议收藏」

    SPSS中如何进行快速聚类分析「建议收藏」作为广受数据分析师青睐的一款数据统计和分析软件,IBMSPSSStatistics中有全面的数据分析方法,今天我们要介绍的是它的聚类分析中的快速聚类分析。一、方法概述聚类分析是将研究对象按照一定的标准进行分类的方法,分类结果是每一组的对象都具有较高的相似度,组间的对象具有较大的差异。这类分析方法多用于对于数据样本没有特定的分类依据的情况,IBMSPSSStatistics会通过对数据的观察为用户做出较为完善的分类。图1:功能位置快速聚类是聚类分析的一种,使用到的功能在“分析”

    2022年10月17日
  • fpga编程语言VHDL_quartus模块

    fpga编程语言VHDL_quartus模块(72)FPGA模块调用(VHDL调用Verilog)1.1目录1)目录2)FPGA简介3)VerilogHDL简介4)FPGA模块调用(VHDL调用Verilog)5)结语1.2FPGA简介FPGA(FieldProgrammableGateArray)是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA设计不是简单的

发表回复

您的电子邮箱地址不会被公开。

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