数据绑定技术一: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 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 = -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 CustomerId=@customerId";
        con.Open();
        SqlCommand cmd = new SqlCommand(sql, con);
        com.Parameters.AddWithValue("@customerId", customerId);
        com.ExecuteNonQuery();
        con.Close();
        GridView1.EditIndex = -1;
        GetData();    
    }

 

转载于:https://www.cnblogs.com/yankyblogs/p/6901716.html

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
第7章 数据绑定控件 300 7.1 数据绑定技术 301 实例188 格式化订货金额和订单日期并 进行绑定 301 实例189 使用绑定表达式高亮显示搜索关键字 302 实例190 Eval()绑定图书图片并实现单击图片 进行链接 304 实例191 Eval()方法绑定日志并用“…”代替 超长内容 305 实例192 双向绑定Bind()方法实现更新最新 电影信息 306 实例193 绑定DataTable对象显示银行月利息 及本息 307 7.2 GridView控件基本应用 308 实例194 GridView数据绑定并实现自带 分页功能 308 实例195 实现选中、编辑和删除GridView中的 商品信息 310 实例196 供求信息网审核发布信息 (审核权限设置) 312 实例197 获取GridView控件中隐藏的列值 314 实例198 在GridView控件中实现商品信息 自动编号 315 实例199 GridView绑定数据为空时的界面设计 316 实例200 GridView强制换行显示论坛帖子的 详细信息 317 实例201 查看GridView当前行绑定的商品 详细信息 319 实例202 GridView复选框绑定列设置商品 是否上架 320 实例203 使用主题来设置GridView控件的外观 322 7.3 GridView控件72般绝技 323 实例204 实现搜索GridView多个关键字高亮 显示 323 实例205 高亮显示数据行并实现双击数据行 弹出新窗口 325 实例206 学生成绩不及格设置单元格突出显示 为红色 326 实例207 根据多个字段内容设置不同数据行的 背景色 327 实例208 自定义分页并结合下拉列表实现页次 切换 328 实例209 结合分页模板PagerTemplate实现 自定义分页 330 实例210 在GridView控件中动态添加模板列 331 实例211 带上下箭头排序并实现查询数据为 空显示表头 334 实例212 GridView自动求和及合并多列多行 单元格 336 实例213 GridView合并行或列单元格的5种 通用方式 338 实例214 GridView删除数据时弹出确认对话框 (含内容提示) 340 实例215 GridView数据源为空时显示表头和 提示信息 341 实例216 创建表头固定、表体可滚动的 GridView控件 342 实例217 可拖动列、可排序、可改变宽度的 GridView控件 344 实例218 使用“…”优化GridView控件中的 超长字符显示 345 实例219 一次性编辑GridView控件的所有行 中的数据 347 实例220 嵌套DropDownList控件根据库存量 设置商品停售 348 实例221 嵌套CheckBox实现批量删除和更新 供求信息 349 实例222 结合CheckBox实现密码重置 (MD5加密) 351 实例223 结合哈希表设置在线考试后台管理 权限 353 实例224 嵌套GridView控件实现商品信息 明细表 354 实例225 将GridView控件数据导出到Excel 并进行格式化 355 实例226 将Excel中数据导入到Aceess 并绑定GridView 356 实例227 将GridView绑定的Access数据 生成XML 358 实例228 嵌套购物车(可增减商品数并显示 摘要信息) 359 实例229 使用LINQ实现GridView控件分页 功能 361 实例230 LINQ绑定GridView实现编辑和删除 数据 362 实例231 开发针对GridView自定义分页的用户 控件 364 7.4 灵活访问数据俊杰:DataList控件 365 实例232 分页绑定DataList数据并实现页面 跳转功能 365 实例233 开发针对DataList控件分页功能的 用户控件 368 实例234 使用DataList删除数据(支持批量 删除) 370 实例235 利用DataList控件智能化查看详细 信息 371 实例236 编辑绑定在DataList控件中的商品 信息 373 实例237 利用嵌套DataList控件显示商品明细 信息 374 实例238 查找嵌套在DataList控件中的多个 服务器控件 376 7.5 王牌现身:全新的ListView控件 377 实例239 以独立DataPager控件设置ListView 的分页 377 实例240 异步无刷新水平滚动照片 (AJAX+ListView) 379 实例241 编辑绑定在ListView中的照片 (ADO.NET版) 380 实例242 编辑绑定在ListView中的照片 (LINQ版) 382 实例243 高亮显示ListView中的数据行并实现 图片自动变换 384
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页