数据绑定技术一:GridView控件

  在网站或应用程序中,要显示数据信息,可用到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 = -1;//实现取消编辑功能
        GetData();
    }

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        string customerId=GridView1.DataKeys[e.RowIndex][0].ToString();//取出修改行的主键值
        //取出修改后各字段的值
        string companyName = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).ToString();
        string contactName = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).ToString();
        string address = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).ToString();
        string phone = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).ToString();
        //将用户更新的数据修改数据库
        SqlConnection con = new SqlConnection();        //定义数据库连接对象
        con.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;  //定义数据库连接字符串
        SqlCommand com = new SqlCommand();              //定义数据库操作命令对象
        com.Connection = con;                           //连接数据库
        string sql = "update Customers set [email protected],[email protected],Address [email protected], [email protected] where CustomerId [email protected] ";
        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 = -1;
        GetData();
    }

-----【删除功能】

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        string customerId = GridView1.DataKeys[e.RowIndex][0].ToString();//取出修改行的主键值    

        SqlConnection con = new SqlConnection();        //定义数据库连接对象
        con.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;  //定义数据库连接字符串
        SqlCommand com = new SqlCommand();              //定义数据库操作命令对象
        com.Connection = con;                           //连接数据库
        string sql = "delete from Customers  where [email protected]";
        con.Open();
        SqlCommand cmd = new SqlCommand(sql, con);
        com.Parameters.AddWithValue("@customerId", customerId);
        com.ExecuteNonQuery();
        con.Close();
        GridView1.EditIndex = -1;
        GetData();
    }
时间: 2024-09-28 07:34:19

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

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

GridView控件支持下面的功能: 绑定至数据源控件, 如SqlDataSource 内置排序功能 内置更新和删除功能 内置分页功能 内置行选择功能 可以编程方式访问GridView对象模型以动态设置属性 处理事件等 多个键字段 用于超链接列的多个数据字段 可通过主题和样式自定义外观 Girdview控件常用属性: BackImageUrl 背景图片 EmptyDtatText 没有任何数据时显示的文字 GridLines 网格线的样式 ShowHeader 是否显示页首连接 ShowFoot

Repeater, DataList, 和GridView控件的区别

http://blog.sina.com.cn/s/blog_646dc75c0100h5p6.html http://www.cnblogs.com/phone/archive/2010/09/15/1826891.html 1. GridView 控件 GridView 控件用于显示表中的数据.通过使用 GridView 控件,您可以显示.编辑.删除.排序和翻阅多种不同的数据源(包括数据库.XML 文件和公开数据的业务对象)中的表格数据. 显示表格数据是软件开发中的一个周期性任务.ASP.N

GridView控件相关2

---恢复内容开始--- 此文档主要侧重---GridView控件上的 [更新] 和 [删除] 两个事件的具体操作: 1.在非编辑状态,如何取出[BoundField]模板中的绑定值: string s = GridView1.Rows[2].Cells[0].Text; 在编辑状态下,如何取出GridView中用[BouldField]绑定的内容------即,如何获得[TextBox]中用户输入的内容: ((TextBox)GridView1.Rows[2].Cells[0].Control

GridView控件相关

---恢复内容开始--- GridView控件的[AutoGenerateColumns]属性(bool类型)的意思是----运行时是否基于关联的数据源自动生成列. 这样造成的影响是列的标题自动生成无法进行修改. 想手工的控制列名,则需把这个属性设为False.然后再控件的右上角点击,出现[编辑列],或者在属性页面设置[Columns]属性,都会弹出编辑列的界面: (1).[BoundField]----绑定以文本形式显示一个字段.它的属性: HeaderText----就是显示的列名, Dat

asp.net GridView控件的列属性

BoundField 默认的数据绑定类型,通常用于显示普通文本 CheckBoxField 显示布尔类型的数据.绑定数据为TRUE时,复选框数据绑定列为选中状态:绑定数据为FALSE时,则显示未选中状态.在正常情况下,CheckBoxField显示在表格中的复选框控件处于只读状态.只有GridView控件的某一行进入编辑状态后,复选框才恢复为可修改状态. CommandField 显示用来执行选择,编辑或删除操作的预定义命令按钮,这些按钮可以呈现为普通按钮,超链接,图片等外观. 通过字段的But

点击CheckBox让Gridview控件在编辑与正常状态之间切换

昨晚快休息时,还有一位网友咨询Insus.NET,他想在开发时,实现一个小功能,就是想让用户在点击Gridview控件第一列的CheckBox之后,GridView进入编辑状态,取消选中的CheckBox,GridView的当前行回复正常状态.是否能实现.当时Insus.NET有提供示例供其参考: http://www.cnblogs.com/insus/p/3219262.html 今早打开Skype一看,他留言了,说还是做不出来.下面Insus.NET还修改一下上面链接的示例,改为网友的实际

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

Insus.NET在实现<ASP.NET开发,从二层至三层,至面向对象 (5)>http://www.cnblogs.com/insus/p/3880606.html 中,没有把数据编辑与更新功能一起演示,留下给网友们自由发挥,但是还是有网友想看看Insus.NET用实现方法. 以前Insus.NET的做法,是在GridView控件中进行.如这篇视频教程<GridView Edit Update Cancel Delete>http://www.cnblogs.com/insus/

C#操作GridView控件

GridView控件是一个visualStudio自带的数据控件,它可以非常快速的将数据以表格方式显示在web页面上.下面就是一个利用GridView控件进行数据绑定的小例子,内容如下: 数据来源自一个XML文件,至于如何操作XML文件,这里不作详细描述,具体可以参考http://www.cnblogs.com/programsky/p/3816073.html 1.XML内容如下: <?xml version="1.0" encoding="utf-8"?&

GridView控件的使用

GridView控件,用表格的形式将数据显示出来.那么如何将将数据绑定到GridView中呢?目前值学习了两种,一种是直接绑定数据源,另一种是动态显示数据(主要使用对象有SqlCommand,SqlDataAdapter,DateSet).这里主要说一下后一种方法:  private void showData(String sql)         {             try             {                 //自动生成表头