asp.net夜话之八:数据绑定控件(上)
DataSource属性:指定数据绑定控件的数据来源,显示的时候程序将会从这个数据源中获取数据并显示。
DataSourceID属性:指定数据绑定控件的数据源控件的ID, 显示的时候程序将会根据这个ID找到相应的数据源控件,并利用这个数据源控件中指定方法获取数据并显示。
DataBind()方法:当指定了数据绑定控件的DataSource属性或者DataSourceID属性之后,再调用DataBind()方法才会显示绑定的数据。并且在使用数据源时,会首先尝试使用DataSourceID属性标识的数据源,如果没有设置DataSourceID时才会用到DataSource属性标识的数据源。也就是说DataSource和DataSourceID两个属性不能同时使用。
数据绑定控件的DataSource控件属性必须是一个可以枚举的数据源,如实现了ICollection、IEnumerable或IListSource接口的类的实例。
DropDownList控件
ListBox控件
GridView控件
DataList控件
Repeater控件
DropDownList控件是一个相对比较简单的数据绑定控件,它在客户端被解释成<select></select>这样的HTML标记,也就是只能有一个选项处于选中状态。
DropDownList控件常见属性:
AutoPostBack属性:这个属性的用法在讲述基本控件的时候已经讲过,是用来设置当下拉列表项发生变化时是否主动向服务器提交整个表单,默认是false,即不主动提交。如果设置为true,就可以编写它的SelectedIndexChanged事件处理代码进行相关处理(注意:如果此属性为false即使编写了SelectedIndexChanged事件处理代码也不会马上起作用)。
DataTextField属性:设置列表项的可见部分的文字。
DataValueField属性:设置列表项的值部分。
Items属性:获取控件的列表项的集合。
SelectedIndex属性:获取或设置 DropDownList 控件中的选定项的索引。
SelectedItem属性:获取列表控件中索引最小的选定项。
SelectedValue属性:取列表控件中选定项的值,或选择列表控件中包含指定值的项。
下面是DropDownList控件的例子,依然用到的是第六章中创建的表(本代码采用了单页模式):
< %@ Import Namespace ="System.Data" % >
< %@ Import Namespace ="System.Data.SqlClient" % >
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< script runat ="server" >
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindMonthList();
BindUserList();
}
}
private void BindMonthList()
{
//因为所有的数组都是Array类的派生类
//而Array类实现了IEnumerable和ICollection这两个接口,所以可以被当作数据源
int[] monthList = new int[12];
for (int i = 0; i <= 11; i++)
{
monthList[i] = i + 1;
}
ddlMonthList.DataSource = monthList;
ddlMonthList.DataBind();//注意不能缺少这一句,否则下拉列表中没有数据
}
private void BindUserList()
{
//实例化Connection对象
SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog=AspNetStudy;Persist Security Info=True;User ID=sa;Password=sa");
//实例化Command对象
SqlCommand command = new SqlCommand("select UserID,RealName from UserInfo", connection);
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataTable data = new DataTable();
adapter.Fill(data);
ddlUserList.DataTextField = "RealName";//指定下拉列表中的文字显示部分
ddlUserList.DataValueField = "UserID";//指定下拉列表中的值部分
ddlUserList.DataSource = data;
ddlUserList.DataBind();
}
</script>
< html xmlns ="http://www.w3.org/1999/xhtml" >
< head runat ="server" >
< title >DropDownList控件的例子 </title>
</head>
< body >
< form id ="form1" runat ="server" >
< div >
< asp:DropDownList ID ="ddlMonthList" runat ="server" >
</asp:DropDownList>
< asp:DropDownList ID ="ddlUserList" runat ="server" >
</asp:DropDownList> </div>
</form>
</body>
</html>
ddlUserList.DataValueField = "UserID";//指定下拉列表中的值部分
{
//实例化Connection对象
SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog=AspNetStudy;Persist Security Info=True;User ID=sa;Password=sa");
//实例化Command对象
SqlCommand command = new SqlCommand("select UserID,RealName from UserInfo", connection);
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataTable data = new DataTable();
adapter.Fill(data);
ddlUserList.DataTextField = "RealName";//指定下拉列表中的文字显示部分
ddlUserList.DataValueField = "UserID";//指定下拉列表中的值部分
//DataTable类实现了IListSource接口
ddlUserList.DataSource = data;
ddlUserList.DataBind();
//根据指定文字找到了对应的选项
ListItem item = ddlUserList.Items.FindByText("刘备");
//如果该选项不为null,则让该选项处于选中状态
//如果不进行这个判断,而选项集合中没有对应的选项,则会抛出异常
if (item != null)
{
item.Selected = true;
}
}
< %@ Import Namespace ="System.Data" % >
< %@ Import Namespace ="System.Data.SqlClient" % >
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< script runat ="server" >
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindUserList();
}
}
private void BindUserList()
{
//实例化Connection对象
SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog=AspNetStudy;Persist Security Info=True;User ID=sa;Password=sa");
//实例化Command对象
SqlCommand command = new SqlCommand("select UserID,RealName from UserInfo", connection);
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataTable data = new DataTable();
adapter.Fill(data);
listUsers.DataTextField = "RealName";//指定下拉列表中的文字显示部分
listUsers.DataValueField = "UserID";//指定下拉列表中的值部分
//DataTable类实现了IListSource接口
listUsers.DataSource = data;
listUsers.DataBind();
}
protected void btnOK_Click(object sender, EventArgs e)
{
string selectedUserName = string.Empty;
//遍历ListBox中的每一个选项
foreach (ListItem item in listUsers.Items)
{
//如果选项被选中
if (item.Selected)
{
selectedUserName += item.Value+",";
}
}
//如果至少有一个选项处于选中状态
if (!string.IsNullOrEmpty(selectedUserName))
{
//删除最后一个","符号
selectedUserNameselectedUserName = selectedUserName.Remove(selectedUserName.Length - 1);
}
Response.Write("您选择的用户编号有:" + selectedUserName);
}
</script>
< html xmlns ="http://www.w3.org/1999/xhtml" >
< head runat ="server" >
< title >ListBox控件用法的例子 </title>
</head>
< body >
< form id ="form1" runat ="server" >
< div >
< asp:ListBox ID ="listUsers" runat ="server" SelectionMode ="Multiple" > </asp:ListBox>
< asp:Button ID ="btnOK" runat ="server" OnClick ="btnOK_Click" Text ="确定" /> </div>
</form>
</body>
</html>
DataTextField="RealName" HeaderText="查看" />
< %@ Import Namespace ="System.Data" % >
< %@ Import Namespace ="System.Data.SqlClient" % >
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< script runat ="server" >
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//默认显示第一页,不过在GridView中第一页的页索引是0
//注意:在C#中集合里的索引也都是以0开始
BindGridView(0);
}
}
//指定绑定页面的数据
private void BindGridView(int pageIndex)
{
//实例化Connection对象
SqlConnection connection = new SqlConnection("Data Source=(local);Initial Catalog=AspNetStudy;Persist Security Info=True;User ID=sa;Password=sa");
//实例化Command对象
SqlCommand command = new SqlCommand("select * from UserInfo", connection);
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataTable data = new DataTable();
adapter.Fill(data);
#region 注意这部分代码可以在设计视图中设置,不必写在代码里
gvUserList.AllowPaging = true;//设置允许自动分页
//gvUserList.AutoGenerateColumns = false;//设置不允许自动绑定列
gvUserList.PageSize = 5;//设置每页显示5条记录
#endregion
gvUserList.DataSource = data;
gvUserList.PageIndex = pageIndex;//设置当前显示第几页
gvUserList.DataBind();
}
//翻页事件
protected void gvUserList_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
//指定新页面,重新绑定数据
BindGridView(e.NewPageIndex);
}
</script>
< html xmlns ="http://www.w3.org/1999/xhtml" >
< head runat ="server" >
< title >用GridView显示数据的例子 </title>
</head>
< body >
< form id ="form1" runat ="server" >
< div >
< asp:GridView ID ="gvUserList" runat ="server" AutoGenerateColumns ="False" OnPageIndexChanging ="gvUserList_PageIndexChanging" >
< Columns >
< asp:BoundField DataField ="UserId" HeaderText ="编号" />
<asp:HyperLinkField DataNavigateUrlFields="UserId" DetailsViewDemo.aspx?UserId={0}"
DataTextField="RealName" HeaderText="查看" />
< asp:BoundField DataField ="UserName" HeaderText ="用户名" />
< asp:BoundField DataField ="RealName" HeaderText ="真实姓名" />
< asp:BoundField DataField ="Age" HeaderText ="年龄" />
< asp:CheckBoxField DataField ="Sex" HeaderText ="男" />
< asp:BoundField DataField ="Mobile" HeaderText ="手机" />
< asp:TemplateField HeaderText ="电子邮件" >
< AlternatingItemTemplate >
< a href='emailto:<%#Eval("Email") % >'>发电子给 < %#Eval("RealName") % > </a>
</AlternatingItemTemplate>
< ItemTemplate >
< %#Eval("Email") % >
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
<Columns>
<asp:BoundField DataField= "UserId" HeaderText= "编号" />
<asp:HyperLinkField DataNavigateUrlFields= "UserId" DataNavigateUrlFormatString= "ShowUser.aspx?UserId={0}"
DataTextField= "RealName" HeaderText= "查看" />
<asp:BoundField DataField= "UserName" HeaderText= "用户名" />
<asp:BoundField DataField= "RealName" HeaderText= "真实姓名" />
<asp:BoundField DataField= "Age" HeaderText= "年龄" />
<asp:CheckBoxField DataField= "Sex" HeaderText= "男" />
<asp:BoundField DataField= "Mobile" HeaderText= "手机" />
<asp:TemplateField HeaderText= "电子邮件">
<AlternatingItemTemplate>
<a href= 'emailto:<%#Eval("Email") %>'>发电子给<%#Eval("RealName") %></a>
</AlternatingItemTemplate>
<ItemTemplate>
<%#Eval( "Email") %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
温馨提示:当前没有任何记录哦。
</EmptyDataTemplate>
</asp:GridView>
SQL语句改为"select * from UserInfo where UserId>100000",这时的效果如下:
asp.net夜话之八:数据绑定控件(上)相关推荐
- asp net夜话之八 数据绑定控件
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 通过前面 ...
- repeater 控件ajax绑定数据源,[Asp.net之旅]--数据绑定控件之Repeater
引言 前几篇的文章在说AJAX的内容,利用AJAX技术能够开发出高效运行的网站应用程序,不过在进行B/S项目开发时只拥有AJAX技术是远远不够的,踏入到B/S要学的东西会更多,但相较C/S的复杂逻辑结 ...
- asp.net学习之 数据绑定控件--List数据绑定控件
List控件(如 CheckBoxList.DropDownList.ListBox 和 RadioButtonList 类)继承自ListControl类,不能直接创建 ListControl 抽象 ...
- asp.net夜话之八:数据绑定控件
通过前面的例子我们看到每次我们要显示数据的时候都要通过一个循环来显示满足条件的数据,这是一个比较麻烦的过程,为此微软定义了一系列的控件专门用于显示数据的格式,通过这些控件可以以可视化的方式查看绑定数据 ...
- asp.net夜话之九:验证控件(上)
本篇要讲述的知识点如下: 数据验证介绍 纯客户端脚本验证 asp.net验证控件概述 RequiredFieldValidator控件 CompareValidator控件 RangeVali ...
- ASP.NET 数据绑定控件(转)
ListBox.GridView.Repeater这三个数据绑定控件的"高效分页",ListBox和GridView内置的有分页,但是其效率太低了,少量的数据还可以,大量的数据根本 ...
- ASP.Net2.0 数据绑定控件的优越性在哪里?
尽管有丰富.功能强大的编程接口,ASP.NET 1.x DataGrid 控件仍需要编写大量自定义代码来处理普通操作,如分页.排序.编辑和删除数据.例如,当用户单击以保存或取消更改时,DataGrid ...
- ASP.NET 2.0 的数据源、数据绑定控件概述与区别
一.Render UI 1 GridView GridView 控件用来在表中显示数据源的值.每列表示一个字段,而每行表示一条记录.GridView 控件支持下面的功能: 绑定至数据源控件,如 Sql ...
- ASP.NET数据绑定控件数据项中的服务器控件注册JS方法
可以利用数据绑定控件的行绑定事件来为控件的属性写入事件 现在要为SmartGrid中的TextBox控件写keyup()JS事件 前台页面 <web:SmartGrid ID="grd ...
最新文章
- ‘vue-cli-service‘ 不是内部或外部命令,也不是可运行的程序
- 模板 - 数学 - 数论 - 莫比乌斯反演 - 2
- 从事嵌入式开发需要掌握哪些知识?从事嵌入式软件开发的前景如何?
- iOS 向下取整、向上取整、四舍五入
- json_encode用法
- Linux系统CUDA10.2+CUDNN安装教程
- (五)Vue 面试真题演练
- HttpContext(三)-Request
- 教育部统考 计算机应用,9月教育部统考《计算机应用基础》试卷一附答案.doc
- java 静态代码块
- idea 根据数据库表自动创建持久化类
- 账龄分析表excel模板_Excel技巧 | 简单而强大的功能 数据统计分析必备—数据透视表...
- 只有A2L文件如何连接INCA
- 读写三维数据.stl文件
- 设 l í {a,b,c}* 是满足下述条件的符号串构成的语言,陇东学院《编译原理》练习题及答案...
- LDPY Ghost Win7 64位 纯净自选版 V5.0
- 字节跳动瞄准千亿互联网医疗蓝海,张一鸣想靠AI算法当“药神”?
- jq 获取input的光标,定位光标的位置
- DB、DBMS、SQL分别是什么,有什么关系?
- AVFoundation 学习资源列表
热门文章
- Simulink 快速入门(一)--Simulink 模块图
- 图着色问题回溯法(最通俗易懂)
- LPDDR4x 的 学习总结(1) - 存储体的浅识
- 计算机科学系绩效分配方案,教育部提出绩效工资分配方案,3类教师收入会增加,有你吗?...
- Whitening Sentence Representations for Better Semantics and Faster Retrieval论文学习
- 基于波长调谐和时域傅里叶技术的多平面检测(MST)关键技术及实现
- 网络打印服务器记录打印文件,使用 CNAME 记录合并打印服务器 - Windows Server | Microsoft Docs...
- 敏捷人不可错过的十本中译书籍
- 【开源教程1】疯壳·开源蓝牙心率防水运动手环-开发套件简介
- [译] Python 的打包现状(写于 2019 年)