GridView数据绑定.docx_第1页
GridView数据绑定.docx_第2页
GridView数据绑定.docx_第3页
GridView数据绑定.docx_第4页
GridView数据绑定.docx_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

9.4 LINQ数据绑定Linq具有强大的数据访问功能,通过Linq语句,可以实现对数据库增删改查操作,并将数据绑定到页面中,通过配合GridView等数据绑定控件,可以实现更为灵活的数据绑定、访问方式。本节将介绍以LINQ为核心的数据绑定方法。9.4.1 GridView分页与排序通过Linq进行GridView绑定,实现GridView的分页与排序。需要对AllowSorting属性,AllowPaging属性和pageSize属性值进行相应的设置。本实例通过GridView控件实现分页和部分字段排序,实例展示如图9-28所示,实例将根据可排序字段和分页空间实现数据的分页显示和按字段排序。图9-28 GridView数据分页与排序实现GridView数据分页与排序的页面源代码: 实现GridView数据分页与排序的程序源代码:using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;public partial class chap8_GridViewPS : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) bindGrid(); private void bindGrid() MyPetShopDataContext dc = new MyPetShopDataContext(); var products = from r in dc.Product select r; /判断是否已经进行排序,如果是则按照ViewState中存储的信息生成排序后的DataView对象 if (ViewStateSortDirection = null) gvProduct.DataSource = products; else if (ViewStateSortDirection.ToString() = DESC)/降序 if (ViewStateSortExpression.ToString() = ProductID) gvProduct.DataSource = products.OrderByDescending(s = s.ProductId); if (ViewStateSortExpression.ToString() = Name) gvProduct.DataSource = products.OrderByDescending(s = s.Name); else/升序 if (ViewStateSortExpression.ToString() = ProductID) gvProduct.DataSource = products.OrderBy(s = s.ProductId); if (ViewStateSortExpression.ToString() = Name) gvProduct.DataSource = products.OrderBy(s = s.Name); gvProduct.DataBind(); protected void gvProduct_Sorting(object sender, GridViewSortEventArgs e) /排序方向设定 if(ViewStateSortDirection = null) ViewStateSortDirection = DESC; if (ViewStateSortDirection .ToString() = ASC) ViewStateSortDirection = DESC; else ViewStateSortDirection = ASC; /排序字段设定 ViewStateSortExpression = e.SortExpression; bindGrid(); / / 实现分页程序 / / / protected void gvProduct_PageIndexChanging(object sender, GridViewPageEventArgs e) gvProduct.PageIndex = e.NewPageIndex; bindGrid(); 操作步骤:(1)新增WEB窗体GridViewPS.aspx。添加GridView控件;(2)设置GridView控件的属性ID:gvProduct,AllowPaging:true,AllowSorting:true,PageSize:5;(3)为GridView控件添加两个事件:OnPageIndexChanging=gvProduct_PageIndexChanging(页面Index发生变化),OnSorting=gvProduct_Sorting(排序事件);(4)在程序中完成绑定数据、排序和分页的事件代码(见相关程序)。9.4.2 GridView数据模板列、行操作在实际的工程应用中,如只使用普通的标准列通常无法满足实际使用的需求,如需在GridView中加入其他控件实现更复杂的功能,则需要通过模板列来解决。同时,在实际操作中,通常需要对数据行进行操作,包括对行的管理操作或者删除等操作,本节将重点介绍数据模板列和行操作。本实例演示了在GridView中显示产品数据,通过模板列加入Label控件,并动态的为每个产品加载类别名称,并通过管理和删除两个列操作实现对数据的外链接管理和删除操作。图9-29 GridView数据模板列、行操作效果图实现本实例的页面代码: 实现本实例的代码:using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;public partial class chap8_GridViewData : System.Web.UI.Page private MyPetShopDataContext dc = new MyPetShopDataContext();/数据上下文 private List category;/类别数据列表,在Category()方法中初始化 protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) bindGrid(); / / 分页 / / / protected void gvProduct_PageIndexChanging(object sender, GridViewPageEventArgs e) gvProduct.PageIndex = e.NewPageIndex; bindGrid(); / / 绑定Product数据 / private void bindGrid() var products = from r in dc.Product select r; gvProduct.DataSource = products; gvProduct.DataBind(); / / 初始化类别数据源 / / private List Category() if (category = null)/判断是否已经读取类别数据,若无,初始化 category = (from r in dc.Category select r).ToList(); return category; / / 处理行删除事件 / / / protected void gvProduct_RowDeleting(object sender, GridViewDeleteEventArgs e) int nProductID = Convert.ToInt32(gvProduct.DataKeyse.RowIndex.Value); var result = (from r in dc.Product where r.ProductId = nProductID select r).FirstOrDefault(); dc.Product.DeleteOnSubmit(result); dc.SubmitChanges(); bindGrid(); / / 行数据绑定,演示绑定类别字段 / / / protected void gvProduct_RowDataBound(object sender, GridViewRowEventArgs e) if (e.Row.RowType = DataControlRowType.DataRow)/判断是否是数据行 try Label lblCategory = (Label)e.Row.FindControl(lblCategory);/找到模板列中的控件 int cateID = int.Parse(e.Row.Cells1.Text);/获取类别ID Category cate = Category().Where(c = c.CategoryId = cateID).FirstOrDefault();/基于Lambda方法查找类别 lblCategory.Text = cate.Name; catch /若Try块有异常,则不作任何处理 / / 处理行命令 / / / protected void gvProduct_RowCommand(object sender, GridViewCommandEventArgs e) if (e.CommandName = Select)/判断当前的事件是否是选择事件 Response.Redirect(ManagePage.aspx?ID=+ gvProduct.DataKeysConvert.ToInt32(e.CommandArgument).Value.ToString(); 操作步骤:(1)建立GridViewData.aspx页面,为页面添加GridView控件,并修改GridView属性:ID:gvProduct,AllowPaging:True, AutoGenerateColumns:False,PageSize:5, DataKeyNames:ProductID,如图9-30,9-31所示;图9-30 GridView数据列设计图9-31 GridView数据模板列编辑(2)添加GridView事件:OnPageIndexChanging=gvProduct_PageIndexChanging(分页事件),OnRowDeleting=gvProduct_RowDeleting(行删除事件),onRowCommand=gvProduct_RowCommand(行命令事件),OnRowDataBound=gvProduct_RowDataBound(行数据绑定事件);(3)在代码页中添加绑定GridView数据的事件private void bindGrid(),添加初始化“类别”数据的事件private List Category();(4)添加行数据绑定事件protected void gvProduct_RowDataBound(object sender, GridViewRowEventArgs e),在该事件中,注意首先判断是否是数据行,然后找到当前行的类别ID,根据该类别ID,从Category数据列表中找到该类别,然后将其Name字段绑定到Label控件中;(5)添加行命令事件protected void gvProduct_RowC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论