作者:奶牛还在Henry | 来源:互联网 | 2023-09-13 23:38
特点:1、使用js方法,把需要的数据一次性写入到页面里,然后用js来实现联动的效果。2、支持n级。3、封装成了服务器控件,所以使用非常简单。4、支持在回发的时候保持状态。5、支持
特点: 1、 使用js方法,把需要的数据一次性写入到页面里,然后用js来实现联动的效果。 2、 支持n级。 3、 封装成了服务器控件,所以使用非常简单。 4、 支持在回发的时候保持状态。 5、 支持修改记录的时候设置默认选项。 6、 页面设置比较灵活。 7、 采用DataSet作为数据的容器。
缺点: 1、 由于是把需要的数据一次性写入页面交给客户端,所以在网速比较慢的时候,显示页面需要比较长的时间。
可以改进的地方: 1、 引入json,可以把需要的数据放到单独的js文件里面,这样可以减少带宽的压力。 2、 Ajax,按需所取。每次只加载需要的数据。
在线演示: 使用省、市、区县的数据库进行演示。由于服务器的网速很慢,所以需要等待一下,等页面完全下载完毕之后,才可以使用,否则会出现js脚本错误。页面完全下载完毕之后就没有js脚本错误了。
在线演示:http://demo.naturefw.com/Nonline/other/default.aspx
1、 二级联动的演示 以省、市联动为例演示。提交表单后可以保持状态,可以设置选项。
在线演示直通:http://demo.naturefw.com/Nonline/other/UniteList02.aspx
protected
void
Page_Load(
object
sender, EventArgs e) { DataAccessLibrary dal
=
DALFactory.CreateDAL();
string
sql
=
@"
SELECT AreaID AS id, AreaName AS txt FROM Base_Area WHERE (AreaCode LIKE '__0000') SELECT ParentID,AreaID AS id, AreaName AS txt FROM Base_Area WHERE (AreaCode LIKE '____00') AND (AreaCode NOT LIKE '__0000')
"
; DataSet ds
=
dal.ExecuteFillDataSet(sql);
this
.lst_Area.DataSource
=
ds;
this
.lst_Area.DataBind(); }
protected
void
btn_Save_Click(
object
sender, EventArgs e) {
//
提交表单后,获取联动下拉列表框的选项值
//
获取ID
string
itemID
=
this
.lst_Area.SelectedValue;
this
.txt_Value.Text
=
itemID;
//
获取text
string
itemText
=
this
.lst_Area.SelectedText;
this
.txt_Value.Text
=
itemID; }
protected
void
btn_SetItemSelect_Click(
object
sender, EventArgs e) {
//
设置下拉列表框的选项
string
itemID
=
this
.txt_SetID.TextTrimNone;
this
.lst_Area.SetSelectedValue(itemID); }
2、 三级联动的演示 以省、市、区县联动为例演示。提交表单后可以保持状态,可以设置选项。
演示直通:http://demo.naturefw.com/Nonline/other/UniteList03.aspx
(服务器的网速有点慢,网页又有点大,所以需要一点时间下载。)
protected
void
Page_Load(
object
sender, EventArgs e) { DataAccessLibrary dal
=
DALFactory.CreateDAL();
string
sql
=
@"
SELECT AreaID AS id, AreaName AS txt FROM Base_Area WHERE (AreaCode LIKE '__0000') SELECT ParentID,AreaID AS id, AreaName AS txt FROM Base_Area WHERE (AreaCode LIKE '____00') AND (AreaCode NOT LIKE '__0000') SELECT ParentID,AreaID AS id, AreaName AS txt FROM Base_Area WHERE (AreaCode NOT LIKE '__0000') AND (AreaCode NOT LIKE '____00')
"
; DataSet ds
=
dal.ExecuteFillDataSet(sql);
this
.lst_Area.DataSource
=
ds;
this
.lst_Area.DataBind(); }
与二级联动的代码相对比,只是SQL语句的地方不同,即多了一条SQL语句。其他的都是一样的。同理,如果是四级的,那么就在多一条SQL语句。
n级联动,那么就需要n条SQL语句。
3、 修改记录演示 一般在修改记录的时候,需要根据记录里的信息设置列表框的选项,这里演示了这种功能。
演示直通:http://demo.naturefw.com/Nonline/other/UniteListUpdate.aspx
增加下面这样的代码即可。
if
(
!
Page.IsPostBack) {
//
6,568,572 是“辽宁省,抚顺市,望花区”对于的ID
//
实际项目中,是从数据库里获取,然后设置,这里只是一个实例
this
.lst_Area.SetSelectedValue(
"
6,568,572
"
); }
4、 页面修饰演示 您看了上面的演示,可呢会觉得几个下拉列表框挨在一起太难看了,这里演示如何来做修饰。这个可以在下拉列表框的前面,加上一些修饰。
演示直通:http://demo.naturefw.com/Nonline/other/UniteListHTML.aspx
protected
virtual
void
SetHTML() {
//
一行里,下拉列表框前面加说明的方法
string
[] html
=
new
string
[
6
]; html[
0
]
=
"
省份:
"
; html[
2
]
=
"
城市:
"
; html[
4
]
=
"
区/县:
"
;
this
.lst_Area.ListHTML
=
html; }
5、 Table形式的表单 在表单里,如果是table形式的话,一行里只想显示一个列表框,那么要如何设置呢?
演示直通:http://demo.naturefw.com/Nonline/other/UniteListHTML_table.aspx
省份、城市、区县各占一行的形式。
protected
override
void
SetHTML() {
//
多行表格的方法
string
[] html
=
new
string
[
6
]; html[
0
]
=
""
; html[
1
]
=
"
"
; html[
2
]
=
"
城市:
"
; html[
3
]
=
"
"
; html[
4
]
=
"
区/县:
"
;
this
.lst_Area.ListHTML
=
html; }
6、 Div形式的表单 在表单里,如果是div形式,一行里只想显示一个列表框,那么又要如何设置呢? 演示直通:http://demo.naturefw.com/Nonline/other/UniteListHTML_div.aspx
省份、城市、区县各占一行的形式。
protected
override
void
SetHTML() {
//
多行表格的方法
string
[] html
=
new
string
[
6
]; html[
0
]
=
""
; html[
1
]
=
"
"
; html[
2
]
=
"
城市:
"
; html[
3
]
=
"
"
; html[
4
]
=
"
区/县:
"
;
this
.lst_Area.ListHTML
=
html; }
注意:
由于控件自身并没有保存数据,所以每次访问的时候,都需要设置DataSource 属性,并且需要绑定(DataBind)。这一点和一般的服务器控件不一样。
设置选项的时候,需要在 if (!Page.IsPostBack) 内设置,否则无法得到用户的选择。
源码下载:http://www.naturefw.com/down/List1.aspx
推荐阅读
近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境 ...
[详细]
蜡笔小新 2024-11-12 22:05:03
本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ...
[详细]
蜡笔小新 2024-11-12 18:13:16
蜡笔小新 2024-11-14 19:07:05
本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ...
[详细]
蜡笔小新 2024-11-14 18:30:58
包含phppdoerrorcode的词条 ...
[详细]
蜡笔小新 2024-11-14 12:06:14
在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ...
[详细]
蜡笔小新 2024-11-12 13:59:27
本文介绍了NoSQL数据库的概念及其应用场景,重点解析了MongoDB的基本特性、数据结构以及常用操作。MongoDB是一个高性能、高可用且易于扩展的文档数据库系统。 ...
[详细]
蜡笔小新 2024-11-15 10:24:19
本文介绍了如何利用HTML和JavaScript实现从远程MP4、本地摄像头及本地上传的MP4文件中截取视频帧,并展示了具体的实现步骤和示例代码。 ...
[详细]
蜡笔小新 2024-11-15 00:19:42
探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ...
[详细]
蜡笔小新 2024-11-14 03:39:46
本文介绍如何通过安装和配置SSSD服务来统一管理用户账户信息,并实现其他系统的登录调用。通过图形化交互界面配置LDAP服务器,确保用户账户信息的集中管理和安全访问。 ...
[详细]
蜡笔小新 2024-11-13 18:19:52
本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ...
[详细]
蜡笔小新 2024-11-13 17:03:49
一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ...
[详细]
蜡笔小新 2024-11-13 15:49:49
HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ...
[详细]
蜡笔小新 2024-11-13 14:02:50
前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ...
[详细]
蜡笔小新 2024-11-12 14:58:57
本文介绍了如何通过Sybase Central连接到示例数据库,并查看其中的表和其他对象。主要内容包括启动Sybase Central、建立连接、查看表列表及表的具体信息。 ...
[详细]
蜡笔小新 2024-11-12 09:07:22