上文实现的GridView控件:

(一)翻页功能

翻页内容,主要实现的是该控件下面,上下翻页,跳转到指定页面。

翻页功能要注意前台页面下面这段代码中的相关命令:

<PagerTemplate  >当前第:<%--//((GridView)Container.NamingContainer)就是为了得到当前的控件--%><asp:Label ID="LabelCurrentPage" runat="server" Text="<%# ((GridView)Container.NamingContainer).PageIndex + 1 %>"></asp:Label>页/共<%--//得到分页页面的总数--%><asp:Label ID="LabelPageCount" runat="server" Text="<%# ((GridView)Container.NamingContainer).PageCount %>"></asp:Label>页<%--//如果该分页是首分页,那么该连接就不会显示了.同时对应了自带识别的命令参数CommandArgument--%><asp:LinkButton ID="LinkButtonFirstPage" runat="server" CommandArgument="First" CommandName="Page" BackColor="#2196f3" ForeColor="White"Visible='<%#((GridView)Container.NamingContainer).PageIndex != 0 %>'>首页</asp:LinkButton><asp:LinkButton ID="LinkButtonPreviousPage" runat="server" CommandArgument="Prev"  BackColor="#2196f3"  ForeColor="White"CommandName="Page" Visible='<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>'>上一页</asp:LinkButton><%--//如果该分页是尾页,那么该连接就不会显示了--%><asp:LinkButton ID="LinkButtonNextPage" runat="server" CommandArgument="Next" CommandName="Page" BackColor="#2196f3" ForeColor="White"Visible='<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>'>下一页</asp:LinkButton><asp:LinkButton ID="LinkButtonLastPage" runat="server" CommandArgument="Last" CommandName="Page" BackColor="#2196f3" ForeColor="White"Visible='<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>'>尾页</asp:LinkButton>转到第<%-- <asp:TextBox ID="txtNewPageIndex" CssClass="pagecount" runat="server" Width="40px" Text='<%# ((GridView)Container.Parent.Parent).PageIndex + 1 %>' />页--%><asp:TextBox ID="Pagenum" CssClass="pagenum" runat="server" Width="20px" Text='<%# ((GridView)Container.Parent.Parent).PageIndex + 1 %>' />页                                               <%--//这里将CommandArgument即使点击该按钮e.newIndex 值为3 --%><asp:LinkButton ID="btnGo" runat="server" CausesValidation="False" CommandArgument="-2"  CssClass="pagejump"  CommandName="Jump" Text="跳转" /></PagerTemplate>

对应的,加入翻页控件的代码:

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e){
GridView1.PageIndex = e.NewPageIndex;ReturnCurBindData();TextBox txt = (TextBox)GridView1.BottomPagerRow.FindControl("Pagenum");txt.Text = (GridView1.PageIndex + 1).ToString();}

ReturnCurBindData()方法的代码,是判断是否有搜索关键字或者分页,来重新绑定数据的。

private void ReturnCurBindData(){if (txt_key.Text.Trim() != "")//当有搜索关键词时,根据关键词绑定数据{this.GridView1.DataSource = SoftToolsDAL.SelectSoftToolsBySearchKey(txt_key.Text.Trim());//SoftToolsDal.SelectAllSoftToolsByClassid(int.Parse(selectvaule));this.GridView1.DataBind();}else{//如果没有关键词,看是否按分类来绑定。if (ddl_class.SelectedValue != "0"){this.GridView1.DataSourceID = null;string selectvaule = this.ddl_class.SelectedValue;if (selectvaule == "0"){Response.Redirect("DataBindProduce.aspx");}else{this.GridView1.DataSource = SoftToolsDAL.SelectAllSoftToolsByClassid(int.Parse(selectvaule));this.GridView1.DataBind();}}else{//初始情况下重新绑定InitData();}}}

跳转到指定页面的代码如下:

 protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e){if (e.CommandName == "Jump"){try{TextBox txt = (TextBox)GridView1.BottomPagerRow.FindControl("Pagenum");                  int pagenum = int.Parse(txt.Text);GridViewPageEventArgs ea = new GridViewPageEventArgs(pagenum - 1);GridView1_PageIndexChanging(null, ea);}catch(Exception ex){Console.WriteLine(ex.ToString());}}}

(二)每行绑定特殊控件

有时候,我们要在列表中每一行中加入除TextBox以外的其他特殊控件,比如DropDownList控件,来修改分类等,这类特殊控件的内嵌,主要是在GridView1_RowDataBound()实现的

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e){//绑定上传人,根据用户ID查询用户名,然后绑定单独列if (((Label)e.Row.FindControl("lbl_Softupuserid")) != null && ((HiddenField)e.Row.FindControl("hf_Softupuserid")) != null){Label lbl_Softupuserid = (Label)e.Row.FindControl("lbl_Softupuserid");HiddenField hf_Softupuserid = (HiddenField)e.Row.FindControl("hf_Softupuserid");// Users us = UserService.GetTheUsers(hf_Softupuserid.Value);lbl_Softupuserid.Text = "管理员";}//绑定DDL 所属类别if (((DropDownList)e.Row.FindControl("ddl_SoftClassname")) != null){DropDownList ddl = (DropDownList)e.Row.FindControl("ddl_SoftClassname");HiddenField hf = (HiddenField)e.Row.FindControl("hf_softclassname");foreach (ListItem item in ddl.Items){if (item.Text == hf.Value){item.Selected = true;}}}//绑定推荐if (((Label)e.Row.FindControl("lbl_recommand")) != null){Label lbl_rec = (Label)e.Row.FindControl("lbl_recommand");if (lbl_rec.Text == "1"){lbl_rec.Text = "首页显示";}else{lbl_rec.Text = "未推荐";}}if (((DropDownList)e.Row.FindControl("ddlToTop")) != null){DropDownList ddl = (DropDownList)e.Row.FindControl("ddlToTop");//HiddenField hf = (HiddenField)e.Row.FindControl("hf_softclassname");HiddenField hf_rec = (HiddenField)e.Row.FindControl("hf_recommand");foreach (ListItem item in ddl.Items){if (item.Value == hf_rec.Value){item.Selected = true;}}}}

在这个方法里面,也可以绑定样式,例如奇偶行不同色等。

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e){if (e.Row.RowType == DataControlRowType.DataRow){e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='#cbe2fa'");e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor='#FFFFFF'");}}

(三)行、列样式

每一列数据居中等样式,主要通过控件的HeaderStyle-CssClass="headcenter" HeaderStyle-Width="100"  ItemStyle-HorizontalAlign="Center“属性来实现的。

(四)常见错误

1、有人在调试跳转到指定页代码时,总是无法获取到正确的Pagenum值。

解决方法:

要在页面加载方法Page_Load中,加入如下代码:

protected void Page_Load(object sender, EventArgs e){if (!Page.IsPostBack){.....}}

如果,没有该代码Page.IsPostBack,则每次点击asp.net控件,页面都会认为是刷新,所有每次的Pagenum值都是初始值。

在asp.net中,页面基础有个回传机制,postback就是回传,即页面在首次加载后向服务器提交数据,然后服务器把处理好的数据传递到客户端并显示出来,就叫postback; Ispostback只是一个属性,即判断页面是否是回传,if(!Ispostback)就表示页面是首次加载,这是很常用的一个判断方式.一个页面只能加载一次,但可以在加载后反复postback。

      每次页面Load的时候,根据需要把每次都要加载的代码放在IsPostBack中,只需要加载一次的代码放在if(!IsPostBack)中。

2、分析器错误消息: 未知的服务器标记“asp:ScriptManager”。 原因web.config,没有配置好!

解决方法:加入

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

原因:

1, ScriptManager(脚本控制器)是asp.net ajax存在的基础.
      2, 一个页面只允许有一个ScriptManager,并且放在其他ajax控件的前面.
      3,ScriptManager掌管着客户端Ajax页的多有脚本,并在页面中注册Ajax类库,用来实现页面的局部更新和对Web服务的调用.

C#操作GridView控件绑定数据实例详解(二)相关推荐

  1. C#操作GridView控件绑定数据实例详解

    一.最简单的GridView数据绑定 二.实例详解功能丰富的GridView (1)绑定数据源(List<T>) (2)编辑:修改.更新.取消.删除 (3)搜索查询.翻页.行样式.数据绑定 ...

  2. wxss 点击样式_微信小程序点击控件修改样式实例详解

    微信小程序点击控件修改样式实例详解 现在要在微信小程序中实现点击控件修改样式,如下: 微信小程序中不支持直接操作dom,要实现这种效果,我们需要通过设置data,然后利用数据和界面的双向绑定来实现它. ...

  3. ASP GridView控件绑定数据进行数据的增删改查

    1.新建一个空项目,添加Web窗体FindUser,在前台设计中拖入GridView控件,在编辑列中设计BoundField,HeaderText属性设置表头文本,DataField属性设置为要显示的 ...

  4. ASP中利用OWC控件实现图表功能详解[zz]

    ASP中利用OWC控件实现图表功能详解 在ASP中利用OWC(Office Web Components)控件可轻松实现各种图表功能,如饼图,簇状柱型图,折线图等. 在下面的代码中我详细的给出了饼图, ...

  5. android禁止下拉刷新,Android开发之无痕过渡下拉刷新控件的实现思路详解

    相信大家已经对下拉刷新熟悉得不能再熟悉了,市面上的下拉刷新琳琅满目,然而有很多在我看来略有缺陷,接下来我将说明一下存在的缺陷问题,然后提供一种思路来解决这一缺陷,废话不多说!往下看嘞! 1.市面一些下 ...

  6. ASP中利用OWC控件实现图表功能详解

    在ASP中利用OWC(Office Web Components)控件可轻松实现各种图表功能,如饼图,簇状柱型图,折线图等. 在下面的代码中我详细的给出了饼图,簇状柱型图,折线图的使用方法.OWC的更 ...

  7. 每日一练:Python爬虫爬取全国新冠肺炎疫情数据实例详解,使用beautifulsoup4库实现

    Python 爬虫篇 - 爬取全国新冠肺炎疫情数据实例详解 效果图展示 第一章:疫情信息的下载与数据提取 ① 爬取页面数据到本地 ② json 字符串正则表达式分析 ③ 提取数据中的 json 字符串 ...

  8. android组件用法说明,Android第三方控件PhotoView使用方法详解

    Android第三方控件PhotoView使用方法详解 发布时间:2020-10-21 15:06:09 来源:脚本之家 阅读:74 作者:zhaihaohao1 PhotoView的简介: 这是一个 ...

  9. java list 重复数据_java 查找list中重复数据实例详解

    java 查找list中重复数据实例详解 需求: 查找一个List集合中所有重复的数据,重复的数据可能不止一堆,比如:aa, bb, aa, bb, cc , dd, aa这样的数据.如果有重复数据, ...

最新文章

  1. C# Email邮件发送,功能是密码找回或者重置功能。
  2. 将VC++6.0的代码迁移到VS2005常见问题总结(Window核心编程第五版以前代码在VS2005无法编译的解决方案)...
  3. Spring Boot 配置SSL 实现HTTPS
  4. 为当前会话的所有作用域中的任何表最后生成的标识值。
  5. Java Android 代码片段收集
  6. nginx trac mysql svn_linux下nginx+svn
  7. java数据库查询类
  8. 全网首发:JProfiler11运行时找不到库的解决办法
  9. Python爬虫之模拟CSDN网站登录
  10. 数据库系统概论第五版 (第 1 章 绪论 ) 笔记
  11. hadoop-uber作业模式
  12. 程序员如何写简历?程序员写出牛逼简历的5大技巧
  13. Linux安装lrzsz
  14. 58私信怎么引流?58同城如何引流到微信?怎么用58同城做引流
  15. 万向和肖风的区块链版图
  16. 佳能服务器维护,佳能产品维护工具(IJ Printer Assistant tool)
  17. 聊聊APP数据分析的那些思路
  18. 跨站请求伪造 - CSRF
  19. 在html 中插入优酷视频
  20. dnf跨几服务器比较稳定,DNF1228跨区了能干嘛 1228跨区问题解决一览

热门文章

  1. C++核心准则边译边学-I.8 表示后置条件最好使用Ensures()
  2. Axure RP9安装完成后不能打开解决方法
  3. 【DB笔试面试623】在Oracle中,给出下面语句的可能的优化思路。
  4. linux的火墙策略优化
  5. 【数据分析】分类指标、用户价值与预测—抖音电商数据集
  6. 达摩院视觉AI训练营-视觉AI技术应用探索-学习笔记
  7. Linux 声卡驱动程序-韦东山-专题视频课程
  8. 结对项目-最长单词链
  9. 360的报应:超级巡警发布通用软件卸载工具 暂时只支持360
  10. 用Proxmox搞定gpu穿透(引用)