C#操作GridView控件绑定数据实例详解(二)
上文实现的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控件绑定数据实例详解(二)相关推荐
- C#操作GridView控件绑定数据实例详解
一.最简单的GridView数据绑定 二.实例详解功能丰富的GridView (1)绑定数据源(List<T>) (2)编辑:修改.更新.取消.删除 (3)搜索查询.翻页.行样式.数据绑定 ...
- wxss 点击样式_微信小程序点击控件修改样式实例详解
微信小程序点击控件修改样式实例详解 现在要在微信小程序中实现点击控件修改样式,如下: 微信小程序中不支持直接操作dom,要实现这种效果,我们需要通过设置data,然后利用数据和界面的双向绑定来实现它. ...
- ASP GridView控件绑定数据进行数据的增删改查
1.新建一个空项目,添加Web窗体FindUser,在前台设计中拖入GridView控件,在编辑列中设计BoundField,HeaderText属性设置表头文本,DataField属性设置为要显示的 ...
- ASP中利用OWC控件实现图表功能详解[zz]
ASP中利用OWC控件实现图表功能详解 在ASP中利用OWC(Office Web Components)控件可轻松实现各种图表功能,如饼图,簇状柱型图,折线图等. 在下面的代码中我详细的给出了饼图, ...
- android禁止下拉刷新,Android开发之无痕过渡下拉刷新控件的实现思路详解
相信大家已经对下拉刷新熟悉得不能再熟悉了,市面上的下拉刷新琳琅满目,然而有很多在我看来略有缺陷,接下来我将说明一下存在的缺陷问题,然后提供一种思路来解决这一缺陷,废话不多说!往下看嘞! 1.市面一些下 ...
- ASP中利用OWC控件实现图表功能详解
在ASP中利用OWC(Office Web Components)控件可轻松实现各种图表功能,如饼图,簇状柱型图,折线图等. 在下面的代码中我详细的给出了饼图,簇状柱型图,折线图的使用方法.OWC的更 ...
- 每日一练:Python爬虫爬取全国新冠肺炎疫情数据实例详解,使用beautifulsoup4库实现
Python 爬虫篇 - 爬取全国新冠肺炎疫情数据实例详解 效果图展示 第一章:疫情信息的下载与数据提取 ① 爬取页面数据到本地 ② json 字符串正则表达式分析 ③ 提取数据中的 json 字符串 ...
- android组件用法说明,Android第三方控件PhotoView使用方法详解
Android第三方控件PhotoView使用方法详解 发布时间:2020-10-21 15:06:09 来源:脚本之家 阅读:74 作者:zhaihaohao1 PhotoView的简介: 这是一个 ...
- java list 重复数据_java 查找list中重复数据实例详解
java 查找list中重复数据实例详解 需求: 查找一个List集合中所有重复的数据,重复的数据可能不止一堆,比如:aa, bb, aa, bb, cc , dd, aa这样的数据.如果有重复数据, ...
最新文章
- C# Email邮件发送,功能是密码找回或者重置功能。
- 将VC++6.0的代码迁移到VS2005常见问题总结(Window核心编程第五版以前代码在VS2005无法编译的解决方案)...
- Spring Boot 配置SSL 实现HTTPS
- 为当前会话的所有作用域中的任何表最后生成的标识值。
- Java Android 代码片段收集
- nginx trac mysql svn_linux下nginx+svn
- java数据库查询类
- 全网首发:JProfiler11运行时找不到库的解决办法
- Python爬虫之模拟CSDN网站登录
- 数据库系统概论第五版 (第 1 章 绪论 ) 笔记
- hadoop-uber作业模式
- 程序员如何写简历?程序员写出牛逼简历的5大技巧
- Linux安装lrzsz
- 58私信怎么引流?58同城如何引流到微信?怎么用58同城做引流
- 万向和肖风的区块链版图
- 佳能服务器维护,佳能产品维护工具(IJ Printer Assistant tool)
- 聊聊APP数据分析的那些思路
- 跨站请求伪造 - CSRF
- 在html 中插入优酷视频
- dnf跨几服务器比较稳定,DNF1228跨区了能干嘛 1228跨区问题解决一览