社区
Ajax
帖子详情
CascadingDropDown从数据库中读取数据绑定到DropDownList控件上?
carllisheng
2007-04-26 09:33:12
CascadingDropDown从数据库中读取数据绑定到DropDownList控件上?WebServices怎么编写?
...全文
426
4
打赏
收藏
CascadingDropDown从数据库中读取数据绑定到DropDownList控件上?
CascadingDropDown从数据库中读取数据绑定到DropDownList控件上?WebServices怎么编写?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
miduzhe
2008-06-28
打赏
举报
回复
如果没有数据库字段对应,这段代码就浪费了
miduzhe
2008-06-28
打赏
举报
回复
数据库是如何设计的?
rta34
2007-11-02
打赏
举报
回复
需求是这样的,有三个DropDownList控件,分别用来选择国家,省份,和城市。他们具有依赖关系,当我选择某个国家的时候,我需要无刷新的动态加载这个国家的所有的省份,同样,当我选择某个省份的时候,我需要无刷新的选择这个省份的所有的城市。而这些国家,省份和城市的数据全部是储存在sql server数据库中。
我看了这个需求后,我打算利用AjaxToolKit中的CascadingDropDown控件加上asp.net2.0自带的DropDownList来实现。
具体过程如下:
CascadingDropDown数据控件默认的填充数据源是基于XML的,它是通过webservice去调用XML文件,通过节点来区分子节,然后加载相关的数据。
网上关于如何来加载XML数据源的例子很多,但是这里的需求决定了,我们得需要利用基于数据库的数据填充方式。
首先,我们需要在我们的web-site中建立一个webservice,它用来提供CascadingDropDown的数据源。(在最新七月的推出的版本中,这里可以不用添加webService,而是直接利用在.cs文件中添加内嵌方法的方式来设定,但不管怎么样,他们在具体实现method中是殊途同归的,这里不做过多讲述)
一般来说,有多少个CascadingDropDown,就有多少个[webMethod],但是,你也可以根据系统的条件以及自己的设计爱好,利用category属性合理的去重载这些方法。
我们在.cs代码页面添加如下代码,以方便前台页面的调用和配置。
[System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
public static CascadingDropDownNameValue[] GetCountries(string knownCategoryValues, string category)
{
//
// 如果采用了webService架构,这里就直接去调用webService中的[webMethod],07年6月份后的版本默认都不采用webService
// 而是直接将webService中的[webMethod]实现移动到这个方法体内
//
}
然后建立数据连结池,可以利用SqlDataAdapter或者SqlDataReader来访问数据库(由于数据量小,建议使用SqlDataReader)
string selectCommand = "SELECT * FROM [dbo].[tbCountryRegion] WHERE [RegionType] = 3";
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLConnectionString"].ConnectionString))
{
SqlCommand sqlcmd = new SqlCommand(selectCommand, conn);
conn.Open();
SqlDataReader reader = sqlcmd.ExecuteReader();
… …
把检索出来的数据转换成CascadingDropDownNameValue类型(该类型在using AjaxControlToolkit命名空间中)
List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
while (reader.Read())
{
values.Add(new CascadingDropDownNameValue(reader[1].ToString(), reader[0].ToString()));
}
reader.Close();
当数据为空的时候,建议设定一个默认值
if (values.Count == 0)
{
values.Add(new CascadingDropDownNameValue("中国", "000"));
}
最终利用返型来存储这些数据,
return values.ToArray();
}
最后,我们需要在aspx页面上配置我们的控件信息和属性
首先是我们的页面显示空间DropDownList
<asp:DropDownList ID=" CountryRegion " runat="server">
</asp:DropDownList>
<asp:DropDownList ID=" Province " runat="server">
</asp:DropDownList>
<asp:DropDownList ID=" CityName " runat="server">
</asp:DropDownList>
然后添加一个我们运行CascadingDropDown控件需要的脚本管理
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
最后添加主角CascadingDropDown控件,并配置相关属性和信息
<ajaxToolkit:CascadingDropDown ID="cascadingDropDownCountry" runat="server" ServiceMethod="GetCountries"
TargetControlID="CountryRegion" UseContextKey="True" Category ="provincename" PromptText="请选择国家" LoadingText="正在加载国家信息...">
</ajaxToolkit:CascadingDropDown>
<ajaxToolkit:CascadingDropDown ID="cascadingDropDownProvince" runat="server" ParentControlID="CountryRegion"
TargetControlID="Province" Category="Provinces" ServiceMethod ="GetProvincesForCountry" UseContextKey="True" PromptText="请选择省份" LoadingText="正在加载省份(地区)信息...">
</ajaxToolkit:CascadingDropDown>
<ajaxToolkit:CascadingDropDown ID="cascadingDropDownCity" runat="server" Category="city" ParentControlID="Province"
ServiceMethod="GetCitiesForProvince" TargetControlID="CityName" UseContextKey="True" PromptText="请选择城市" LoadingText="正在加载城市信息">
</ajaxToolkit:CascadingDropDown>
刚才,我们添加的[webMethod]是GetCountries,它作为CascadingDropDown控件cascadingDropDownCountry的获取数据的方法 (cascadingDropDownCountry中的ServiceMethod="GetCountries"来定义这个属性),而将它关联的是DropDownList 中 CountryRegion控件(cascadingDropDownCountry中的TargetControlID="CountryRegion"来定义)。而另外两个Province和CityName控件所关联的cascadingDropDownProvince和 cascadingDropDownCity控件呢?他们的[ServiceMethod]方法又是什么呢?我们可以看到在这两个CascadingDropDown控件的后面有一个ServiceMethod=""的属性,这个就是配置了他们的获取数据的方法。又上面的配置信息,我们可以得到他们的方法分别是CountryRegion和GetCitiesForProvince方法,这个需要我们在.cs中重新定义,类似于我们操作第一个一样。
不同的是,由于我们的第一个没有其关联的父选项DropDownList,所以,在获取数据的时候,直接就可以利用sql句获取我们想得到的数据,但是,第二个和第三个却都拥有父选项,换句话说,他们的内容是受到他们的父选项控制的,比如,我们只有在第一个DropDownList中选择了国家,我们的才能在第二个DropDownList中,动态的加载这个国家的所有地区,我们也只有选择了第二个DropDownList中的地区或省份,我们才能在第三个DropDownList中动态添加该地区或省份的所有城市。他们是具有父子之间的依赖关系的。
那么,他们之间是怎么联系的呢?答案就在代码中。
请注意,前台CascadingDropDown控件代码中的这个配置
ParentControlID="Province"
Category="city"
这两个配置的意思就是,ParentControlID定义了CascadingDropDown控件所绑定的DropDownList的控件的父选项是是什么。
而Category表示的是,它所处的类别,是用户自定义的,方便在多个CascadingDropDown控件调用一个[webMethod]的时候,实现重载。
当我们的子下拉控件绑定到父下拉的时候,根据这个控件的特色,就会产生如下的联系:
1.当父下拉控件不被选择的时候,子下拉控件是呈灰色不可操作的
2.当父下拉空间被选择的时候,子下拉空间就在其被选择后,根据父控件被选择的内容,自动加载预定信息
他们之间的联系,就是通过ParentControlID设定后,在子控件获取数据的方法体中knownCategoryValues获得。
[System.Web.Services.WebMethodAttribute(), System.Web.Script.Services.ScriptMethodAttribute()]
public static CascadingDropDownNameValue[] GetCountries(string knownCategoryValues, string category)
knownCategoryValues的传递是以字符串的形式传递的,它的主要形式如下:
"provincename:000;”
"provincename:000;”Provinces:000010;"
传递一次,它就将会随之自动的增加一次。Provincename是我们下拉框选项的显示内容(text),000是下拉框在这个显示内容下的值(value).
他们是从哪里来的呢,是从我们的父下拉控件中传递过来的,如
values.Add(new CascadingDropDownNameValue("中国", "000"));
这里面name就是“中国”,value就是“000”。
既然如此,我们就可以按照如下方式进行操作,获取父控件传递的信息,如下
方法一:截取字符串到字符串数组
string[] categoryValues = knownCategoryValues.Split(':', ';');
方法二:利用数据字典
StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
这两种方法是殊途同归。
我采取的是第一种方法,简单易懂。
在获取上面传来的值信息之后,我们就可以进行数据检索操作,并去获取我们想要的数据了
string selectCommand = "SELECT * FROM [dbo].[tbCountryRegion] WHERE [RegionType] = 2 AND [RegionID] LIKE '" + categoryValues[1]+ "%'";
下面的过程和第一个控件的这个方法一样,利用SqlDataReader来访问数据库,把检索出来的数据转换成CascadingDropDownNameValue类型,然后进行输出。
不管有多少级下拉框,我们都可以利用这个方法来如法炮制的操作。
完成后,我们就可以设定端点F5一下,欣赏自己的劳动成果了。
Ps:我们可以利用Category属性来完成多个联动下拉菜单在一个方法中获取自己数据。
代码如下:
string[] categoryValues = knownCategoryValues.Split(':', ';');
switch (category)
{
case "city": //定义category为city的那个CascadingDropDown控件响应
string selectCommand = "SELECT * FROM [dbo].[tbCountryRegion] WHERE [RegionType] = 1";
break;
case "Provinces": //定义category为Provinces的那个CascadingDropDown控件响应
string selectCommand = "SELECT * FROM [dbo].[tbCountryRegion] WHERE [RegionType] = 2 AND [RegionID] LIKE '" + categoryValues[1] + "%'";
break;
case "Countries": //定义category为Countries的那个CascadingDropDown控件响应
string selectCommand = "SELECT * FROM [dbo].[tbCountryRegion] WHERE [RegionType] = 3 AND [RegionID] LIKE '" + categoryValues[1] + "%'";
break;
default :
break ;
}
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLConnectionString"].ConnectionString);
SqlDataAdapter dbAdaper = new SqlDataAdapter(selectCommand, conn);
DataSet dbset = new DataSet();
dbAdaper.Fill(dbset, "tbCountryRegion");
DataColumn columnRegionName = dbset.Tables["tbCountryRegion"].Columns["RegionName"];
DataColumn columnRegionID = dbset.Tables["tbCountryRegion"].Columns["RegionID"];
List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
foreach (DataRow row in dbset.Tables["tbCountryRegion"].Rows)
{
values.Add(new CascadingDropDownNameValue(row[columnRegionName].ToString(), row[columnRegionID].ToString()));
}
return values.ToArray();
asp.net实现XML文件
读取数据
绑定
到
DropDown
List
的方法
主要介绍了asp.net实现XML文件
读取数据
绑定
到
DropDown
List
的方法,结合实例形式分析了asp.net针对xml文件操作及
DropDown
List
控件
的使用技巧,需要的朋友可以参考下
DropDown
List
等列表类
控件
的SelectedValue值的安全
绑定
在ASP.NET 2.0 网站页面的开发过程
中
,经常需要把
DropDown
List
等列表类
控件
的SelectedValue值设置为一个从
数据库
或其他地方读取出来的值。 最简单的办法就是直接进行指定:
DropDown
List
1.SelectedValue = "
中
国"; 但有的时候如果
DropDown
List
1
中
没有"
中
国"这一项的话,赋值就会出现异常,这是我们所不愿意看到的,那么有没有一种安全的
绑定
方法来避免出现这样的情况呢?当然是有的,看完我传的资料,相信一定能使你有所收获,我也是网上搜集的呢~~
.net
控件
dropdown
list
动态
绑定
数据具体过程分解
一、在页面初始化时候将集合
绑定
到
DropDown
List
;二、在页面初始化的时候向
DropDown
List
添加数据;三、将DataReader读取的数据动态
绑定
到
DropDown
List
等等
asp.net专家疑难解答200问源码
第1章 空 第2章 ASP.NET运行模型 21.如何在页面
中
应用javascript脚本-示例1 21.如何在页面
中
应用javascript脚本-示例2 22.如何实现从服务器端向页面动态添加javascript脚本-示例1 22.如何实现从服务器端向页面动态添加javascript脚本-示例2 24.如何处理多页面重定向到同一页面后的返回问题 25.如何用Response.Redirect方法传递汉字 29.如何利用输出缓存技术缓存整个页面 30.如何利用片段缓存技术对用户
控件
进行缓存 31.如何利用数据缓存技术提高程序的性能 33.如何实现当页面产生错误时重定向到自定义错误界面 35.如何在程序
中
读写Web.config文件 37.如何使用CSS文件定义
控件
的样式 38.如何启用和禁用ViewState保存状态信息的功能 39.如何应用IsPostBack控制页面的加载 41.如何使用Trace对象进行跟踪调试(页面级) 42.如何使用#Include语法将文件添加到页面 43.如何使用编程的方式处理异常信息 44.如何将网页错误信息写入事件日志 第3章 常用Web服务
控件
46.如何使用Label
控件
动态显示文本信息 47.如何实现当鼠标移到
控件
时显示提示信息 48.如何在Web应用程序
中
实现快捷键功能(使用脚本实现) 48.如何在Web应用程序
中
实现快捷键功能(使用属性实现) 49.如何设置页面上
控件
的Tab键顺序 50.如何实现用回车键代替Tab键的功能 51.如何为按钮键添加消息框 52.Button、LinkButton和ImageButton服务
控件
的区别及应用 54.如何使用CheckBox和CheckBox
List
控件
(CheckBox示例) 54.如何使用CheckBox和CheckBox
List
控件
(CheckBox
List
示例) 55.如何使用RadioButton和RadioButton
List
控件
(RadioButton示例) 55.如何使用RadioButton和RadioButton
List
控件
RadioButton
List
示例) 56.如何使用Panel
控件
操作一组
控件
57.如何使用Table
控件
组织页面的内容 58.如何实现
DropDown
List
控件
选项的添加、删除等操作 59.如何实现间接改变
DropDown
List
控件
的当前选项 60.如何实现两个或多个
DropDown
List
控件
的联动 61.如何实现
List
Box
控件
选项的上移、下移、添加和删除操作 62.如何实现
List
Box
控件
中
选项的双击事件 63.如何动态设置
List
Box
控件
中
各选项的背景颜色 64.如何在页面
中
动态创建
控件
65.如何为HTML服务器
控件
的事件添加自定义方法 第4章 验证
控件
67.如何使用RequiredFieldValidator
控件
验证用户是否输入信息 68.如何使用RegularExpressionValidator
控件
验证E-mail地址和邮编等格式 69.如何使用RangeValidator
控件
验证输入的信息是否在指定范围内 70.如何使用CompareValidator
控件
对两个输入
控件
比较验证 71.如何使用CustomValidator
控件
自定义验证格式 72.如何使用ValidationSummary
控件
总结所有验证
控件
的错误信息 73.如何创建自定义功能的验证
控件
74.如何禁用服务器
控件
的验证功能 75.如何控制页面部分验证
控件
有效 76.如何实现
控件
即时验证功能 77.如何使用验证
控件
综合验证用户注册页面 78.如何验证DataGrid
控件
的编辑列 81.如何使用验证
控件
验证日期类型的输入(CompareValidator) 81.如何使用验证
控件
验证日期类型的输入(CustomerValidator) 81.如何使用验证
控件
验证日期类型的输入(RegularValidator) 第5章 高级Web
控件
82.如何在网页
中
使用Calendar Web
控件
显示和选择日期 83.如何在Calendar Web
控件
中
控制个别日的内容及显示 84.如何在Calendar Web
控件
中
控制用户日期选定 86.如何使用XML
控件
显示XML文件和进行XSLT转换 87.如何使用AdRotator Web
控件
制作广告发布程序-示例1 87.如何使用AdRotator Web
控件
制作广告发布程序-示例2 88.如何创建用户
控件
89.如何将Web窗体转换成用户
控件
90.如何实现动态加载用户
控件
92.如何使用TabStrip Web和MultiP
ASP.NET
DropDown
List
控件
的使用方法
1. 数据
绑定
代码如下: this.
DropDown
List
1.DataSource = CategoryManager.getCategories();
DropDown
List
1.DataValueField = “id”;//用来设置下拉列表选
中
的 Value 值
DropDown
List
1.DataTextField = “name”;//为下拉列表选项显示的值
DropDown
List
1.DataBind(); 2.
读取数据
代码如下: int categoryId = int.Parse(this.
DropDown
List
1.SelectedItem.Value);//获取
Ajax
52,797
社区成员
25,306
社区内容
发帖
与我相关
我的任务
Ajax
Web 开发 Ajax
复制链接
扫一扫
分享
社区描述
Web 开发 Ajax
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章