在网站或应用程序中,要显示数据信息,可用到ASP.NET提供的数据源控件和能够显示数据的控件。

一、数据源控件

  数据源控件用于连接数据源、从数据源中读取数据以及把数据写入数据源。

1.数据源控件特点

  使用数据源控件可以不用编写任何代码就可以实现页面的数据绑定。

2.数据源控件的种类

  .NET框架提供了如下几个数据源控件:

  1. SqlDataSource,它用来访问存储在关系数据中的数据源,它与SQL Server一起使用时支持高级缓存功能。当数据作为DataSet对象返回时,此控件还支持排序、筛选和分页。
  2. AccessDataSource,它主要用来访问Microsoft Access数据库。当数据作为DataSet对象返回时,支持排序、筛选和分页。
  3. ObjectDataSource,它是表示具有数据检索和更新功能的中间层对象,允许使用业务对象或其他类,并可创建依赖中间层对象管理数据的Web应用程序。
  4. XmlDataSource,它主要用来访问XML文件,特别适用于分层的ASP.NET服务器控件,如TreeView或Menu控件。
  5. SiteMapDataSource,结合 ASP.NET 站点导航使用。
  6. LinqDataSource,使用 LinqDataSource 控件,可以在 ASP.NET 网页中使用 LINQ,从数据表或内存数据集合中检索数据。
  7. EntityDataSource,EntityDataSource 控件支持基于实体数据模型(EDM) 的数据绑定方案。此数据规范将数据表示为实体和关系集。它支持自动生成更新、插入、删除和选择命令以及排序、筛选和分页。

二、数据绑定控件

  数据绑定控件可以绑定到数据源控件,利用数据源控件提供的数据实现包括排序、分页、更新、删除和插入等对数据的操作功能,也可以通过编写代码实现。

1.数据绑定控件特点

  数据绑定控件通过DataSourceID属性连接到数据源控件。

2.数据源控件的种类

  常用的数据绑定控件有:

  1. GridView控件,以表格的形式显示数据,它是所有数据绑定控件中封装功能最多,最完善的一个控件,在不编写任务代码的情况下可以实现对数据进行技术检索、更新、删除、排序和分页等功能。也能运行代码绑定。
  2. DataList控件,使用不同的布局来显示数据记录,如将数据记录排成列或行。该控件提供了实现基本数据操作功能的常用命令,同时也提供了丰富的模板供用户使用。
  3. DetailsView控件,以表格形式显示数据,只是一次只能呈现一条记录,并提供翻阅多条记录以及插入、更新和删除记录功能。该控件通常和其他控件配合使用,如用GridView控件显示基本信息,用DetailsView控件显示相关的详细信息。
  4. FormView控件,与DetailsView控件类似,它一次呈现数据源的一条记录,并提供翻阅多条记录以及插入、更新和删除记录功能。FormView控件使用自定义布局,在布局时会更灵活些 。
  5. Repeater控件,以只读的方式显示多条记录,Repeater控件使用自定义布局。
  6. ListView控件,类似Repeater控件,它本身不提供分页功能,借助DataPage控件实现分页。

3.GridView控件

GridView控件的使用方式:

(1)通过任务编辑器操作GridView控件

(2)通过代码操作GridView控件

【例】通过代码操作GridView控件,实现数据的显示、删除、更新和分页功能。

-----【显示功能】

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data; //引入命名空间
using System.Data.SqlClient; //引入命名空间
using System.Configuration; //引入命名空间 public partial class _2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack){
GetData();
} }
protected void GetData() {
SqlConnection con = new SqlConnection(); //定义数据库连接对象
con.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; //定义数据库连接字符串
SqlCommand com = new SqlCommand(); //定义数据库操作命令对象
com.Connection = con; //连接数据库
com.CommandText = "select CustomerID,CompanyName,ContactName,ContactTitle,Address from Customers"; //定义执行查询操作的sql语句
SqlDataAdapter da = new SqlDataAdapter(); //创建数据适配器对象
da.SelectCommand = com; //执行数据库操作命令
DataSet ds = new DataSet(); //创建数据集对象
da.Fill(ds,"customers"); //填充数据集
GridView1.DataSource = ds.Tables["Customers"].DefaultView;//设置gridview控件的数据源为创建的数据集ds
GridView1.DataBind(); //绑定数据库表中数据 }
}

运行结果:

-----【分页功能】

设置相关属性。在源视窗中手动添加 AllowPaging="True"   PageSize="8"

 <asp:GridView ID="GridView1" runat="server" AllowPaging="True" PageSize="8"
AutoGenerateColumns="False" onpageindexchanging="GridView1_PageIndexChanging"
>
<Columns>
<asp:BoundField DataField="CustomerID" HeaderText="编号" />
<asp:BoundField DataField="CompanyName" HeaderText="公司名称" />
<asp:BoundField DataField="ContactName" HeaderText="联系人" />
<asp:BoundField DataField="ContactTitle" HeaderText="联系人头衔 " />
<asp:BoundField DataField="Address" HeaderText="地址" />
</Columns>
</asp:GridView>

后台代码如下

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GetData();
}

运行结果:

-----【选择、编辑、更新功能】

protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
GridView1.SelectedIndex = e.NewSelectedIndex; //实现选择功能
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex; //实现编辑功能
GetData();
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -;//实现取消编辑功能
GetData();
} protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string customerId=GridView1.DataKeys[e.RowIndex][].ToString();//取出修改行的主键值
//取出修改后各字段的值
string companyName = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[].Controls[])).ToString();
string contactName = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[].Controls[])).ToString();
string address = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[].Controls[])).ToString();
string phone = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[].Controls[])).ToString();
//将用户更新的数据修改数据库
SqlConnection con = new SqlConnection(); //定义数据库连接对象
con.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; //定义数据库连接字符串
SqlCommand com = new SqlCommand(); //定义数据库操作命令对象
com.Connection = con; //连接数据库
string sql = "update Customers set CompanyName=@companyName,ContactName=@contactName,Address =@address, Phone=@phone where CustomerId =@customerId ";
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@companyName", companyName);
cmd.Parameters.AddWithValue("@contactName", contactName);
cmd.Parameters.AddWithValue("@address", address);
cmd.Parameters.AddWithValue("@phone", phone);
cmd.Parameters.AddWithValue("@customerId", customerId);
com.CommandText = sql.ToString();
com.ExecuteNonQuery();
con.Close();
GridView1.EditIndex = -;
GetData();
}

-----【删除功能】

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string customerId = GridView1.DataKeys[e.RowIndex][].ToString();//取出修改行的主键值 SqlConnection con = new SqlConnection(); //定义数据库连接对象
con.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; //定义数据库连接字符串
SqlCommand com = new SqlCommand(); //定义数据库操作命令对象
com.Connection = con; //连接数据库
string sql = "delete from Customers where CustomerId=@customerId";
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
com.Parameters.AddWithValue("@customerId", customerId);
com.ExecuteNonQuery();
con.Close();
GridView1.EditIndex = -;
GetData();
}

数据绑定技术一:GridView控件的更多相关文章

  1. 分页技术之GridView控件

    GridView控件实现分页技术 第一步:设置GridView控件的属性,跟分页相关的属性设置如下: AllowPaging="true":允许分页, PageSize=" ...

  2. GridView控件

    GridView是ASP.NET 1.x的DataGrid控件的后继者.它提供了同样的基本功能集,同一时候添加�了大量扩展和改进.如前所述,DataGrid(ASP.NET 2.0仍然全然支持)是一个 ...

  3. 027. asp.net中数据绑定控件之 GridView控件

    GridView控件支持下面的功能: 绑定至数据源控件, 如SqlDataSource 内置排序功能 内置更新和删除功能 内置分页功能 内置行选择功能 可以编程方式访问GridView对象模型以动态设 ...

  4. Repeater, DataList, 和GridView控件的区别

    http://blog.sina.com.cn/s/blog_646dc75c0100h5p6.html http://www.cnblogs.com/phone/archive/2010/09/15 ...

  5. GridView控件隐藏列

    GridView隐藏列visible="false" 后你就无法取得这列的值了 下面是迄今为止最简洁的解决方法了. protected void GVList_RowDataBou ...

  6. GRIDVIEW 控件

    http://www.cnblogs.com/shanymen/archive/2009/05/22/1486654.html GridView控件是.net里的一个显示数据控件,该控件制作很人性化, ...

  7. asp.net GridView控件的列属性

    BoundField 默认的数据绑定类型,通常用于显示普通文本 CheckBoxField 显示布尔类型的数据.绑定数据为TRUE时,复选框数据绑定列为选中状态:绑定数据为FALSE时,则显示未选中状 ...

  8. .NET中使用GridView控件输入数据时出现“ Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index"的问题

    在.NET中使用GridView控件的在线编辑数据时,出现了“ Index was out of range. Must be non-negative and less than the size ...

  9. ASP.NET编辑与更新数据(非GridView控件实现)

    Insus.NET在实现<ASP.NET开发,从二层至三层,至面向对象 (5)>http://www.cnblogs.com/insus/p/3880606.html 中,没有把数据编辑与 ...

随机推荐

  1. Final 关键字

    1.涵义 最一般的意思就是声明 "这个东西不能改变".之所以要禁止改变,可能是考虑到两方面的因素:设计或效率. final 关键字可以用来修饰变量.方法和类,修饰变量表示变量不能被 ...

  2. 贡献你的代码,将jar包发布到Maven中央仓库以及常见错误的解决办法

    前几天将自己的日志工具发布到了Maven中央仓库中.这个工具本省没有多少技术含量,因为是修改别人的源代码实现的,但是将jar发布到Maven仓库却收获颇丰,因为网上有些教程过时了,在此分享下自己发布j ...

  3. 广搜:codevs-3344(初步bfs)

    一道典型的迷宫问题 小刚在迷宫内,他需要从A点出发,按顺序经过B,C,D--,到达最后一个点,再回到A点.迷宫内有些障碍,问至少走几步. 输入描述 Input Description 第一行有三个数n ...

  4. Canvas: 优雅的代码作图系列:中国国旗

    Canvas: 优雅的代码作图系列:中国国旗 有很多个这练手的,好的差的都有.这次,我演示下用极客的代码,画出最标准的中国国旗,并详细说明代码是怎么写出来的. 绘制规范: 一.严格按照绘制说明: 二. ...

  5. [Usaco2007 Open]Fliptile 翻格子游戏 状态压缩

    考试想到了状压,苦于T1废掉太长时间,于是默默输出impossible.. 我们知道,一个格子的翻转受其翻转次数和它相邻翻转次数的影响. 由每一个位置操作两次相当于把它翻过来又翻回去,所以答案中每一个 ...

  6. Android 开发中常见的注意点

    这里总结了Android开发中常用的注意点.只有总结,没有展开举例讲解,展开的话,一个点都可以写一篇文章了..... 这类问题都一定不要犯. 重要的事情说三遍!!! 说三遍!!! 遍!!! 资源 不允 ...

  7. cornerstone 使用报错 working copy ... is too old(format 10 created by subversion 1.6)

    1.....本来正常使用的cornerstone 突然出现这个问题 图片如下 2....解决方案,,,,也搜集了方法,,但是最后竟然就这样解决了,,完全搞不懂的解决方案啊 如图 3......如有错误 ...

  8. python学习===判断两个日期的间距天数

    import datetime   d1 = datetime.date(2015,10,7) d2 = datetime.date(2015,8,15) print((d1-d2).days)

  9. 研究分析JS中的三种逻辑语句

    JS中的三种逻辑语句:顺序.分支和循环语句. 一.顺序语句 代码规范如下:1. <script type="text/javascript"> var a = 10;  ...

  10. 【学习笔记】深入理解超时调用(setTimeout)和间歇调用(setInterval)

    超时调用(setTimeout):在指定的毫秒数后调用函数或计算表达式. setTimeout(func, 1000); // func执行的函数,1000毫秒 间歇调用(setInterval):按 ...