XML数据的分页显示
我的个人网站上有一个页面,主要介绍了一些我喜欢的书籍,目前有9本,这样把页面拉的很长,挺影响美观的,于是决定分页显示它们。我没有SQL数据库,而且我也不想用复杂的数据库来存放这种简单的数据,所以我用的是XML文件,把它读入DataSet,然后再在Repeater中显示。
如果是SQL数据库或Access等,分页到是挺简单的,但是我存放数据的是XML文件,又不能用SQL语句,怎么办呢?问了一个高手,知道了还有一种叫XPath的语言,又学到一些东西了,不敢偷懒,马上记下。
XmlDataDocument doc = SiteCache.Get("Doc") as XmlDataDocument;
DataSet ds = SiteCache.Get("Books") as DataSet;
if(doc == null && ds == null) {
string path;
if(HttpContext.Current != null)
path = HttpContext.Current.Server.MapPath("~/Content/Books.xml");
else
path = Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + "Content/Books.xml";
ds = new DataSet();
ds.ReadXml(path);
doc = new XmlDataDocument(ds);
SiteCache.Max("Doc", doc, new System.Web.Caching.CacheDependency(path));
SiteCache.Max("Books", ds, new System.Web.Caching.CacheDependency(path));
}
//总数据项为DataRow的个数
pager.TotalRecords = ds.Tables[0].Rows.Count;
int current = pager.PageIndex * pager.PageSize;
int target = current + pager.PageSize;
string xpath = String.Format("/Books/Book[position()>{0} and position()<={1}]", current, target);
XmlNodeList nodes = doc.DocumentElement.SelectNodes(xpath);
DataRow row = null;
DataSet ds2 = ds.Clone();
ds2.Clear();
foreach(XmlNode node in nodes) {
row = doc.GetRowFromElement((XmlElement)node);
//ds2.Tables[0].Rows.Add(row); 不能用这样的语句,否则会抛异常
ds2.Tables[0].ImportRow(row);
}
books.DataSource = ds2;
books.DataBind();
上面的代码中,pager是一个分页控件,books是一个Repeater,用XPath选择要读取的节点,把它赋值到一个DataRow中,然后将之导入DataTable中,再绑定到Repeater上,就可以显示了。这里遇到个小问题,不能用ds2.Tables[0].Rows.Add(row);这个语句,否则会抛个“此DataRow已属于另一个DataTable”的异常,不知为什么,改为ImportRow就没问题了。希望哪位高手知道,请告诉我一声,谢谢。
http://chengbo.net/books.aspx
XML数据的分页显示相关推荐
- jsp:使用jsp完成数据的分页显示
一,使用jsp将数据库内的数据.分页显示到页面 1,创建一个servelt处理后台数据,和数据库的数据 private static final long serUid=1L;//加载驱动static ...
- 应用displaytag完成大数据量分页显示的例子
应用displaytag在struts中完成大数据量分页显示,Oracle数据库 JSP文件: <%...@ taglib uri="/WEB-INF/displaytag.tld&q ...
- 使用JS动态生成表格数据和分页显示
根据录入的内容动态显示到页面,不需要通过数据库保存,这样子减轻服务器压力.同时如果数据过多,支持分页显示,这些数据到保存时可以一起提交到后台. 效果如下: js代码(要引入JQuery): <! ...
- layui分页只能显示一页数据_分页显示查询数据
查询数据后,将数据分页显示 一.前台页面 Title 查询 顺序号 ID 标题 时间 二.后台代码 protected void Page_Load(object sender, EventArgs ...
- 网页数据分页显示php,PHP网页设计例子:用PHP3完成MySQL数据的分页显示
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区. 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 会MYSQL吗?会,我会把我的信息在数据库里插入删除啦mysql|分页|数据|显示 ...
- Vue数据格式化:JSON、HTML、XML数据的格式化显示
介绍 数据格式化编辑器: 方便你实现在线的数据格式化编辑与显示的工具.支持的数据格式包括:JSON.HTML.XML 源码工程地址:vue_data_editor 效果图 安装 由于源码未创建npm包 ...
- Flask+MySQL大数据表格分页显示
1.显示效果 界面主要由两部分完成 顶部搜索栏:按条件传参给后端请求,控制表格数据重载刷新 底部表格:接收后端返回JSON数据,对表格渲染显示 2.前端传参 前端采用Layui框架渲染,对页码和条数传 ...
- 数据查询分页显示的优化方法
现有方法: 开始时间 [@start_dt ] 结束时间 [@end_dt ] 其它条件 [ ] 查询数据总量:[XXXX] 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
- 浅谈AJAX并实现使用pagehelper-5.1.10.jar分页插件实现异步从数据库中获取数据分页显示
AJAX异步请求 什么是ajax 异步 JavaScript 同步和异步的区别 同步方式:正常情况下,浏览器与服务器之间是串行操作,类似于一个Java线程的操作. 异步方式:浏览器与服务器是并行操作, ...
最新文章
- [Windows编程] 获取系统CPU 个数
- Spark Java API:Transformation
- java断言——Assertion
- Linux下没有包含头文件(不知是哪个)导致编译无法通过的解决心得
- 哲学家就餐问题(如何避免死锁)(多线程版)
- 前端学习(3260):js高级教程(4)instanceof
- 集成学习voting Classifier在sklearn中的实现
- python-day1-03-格式化输出
- JAVA调用 keras,在TensorFlow(Python, Java)环境下使用Keras模型
- 数据结构-----环形链表
- (转)以C++为核心语言的高频交易系统的讨论?
- 2020年全国大学生数学建模竞赛优秀论文
- Excel怎么隐藏指定文本单元格整行
- ARRL在线电台日记(LOTW)申请
- html5微信拍照后自动刷新,微信内置浏览器物理返回不刷新问题
- krpano 运算符
- Python实现自动完成打字测试
- win7 android usb驱动,在win7系统下安装手机usb驱动软件的教程
- MyBatis02:CRUD 操作
- 当你的工作==你热爱的事情,是一种什么体验?
热门文章
- python生成100个随机数_Python_0——100闭区间产生3个随机数,两种方法排序
- Matlab的不同进制转换
- numpy.random.uniform()
- 详解tf.nn.dropout
- html5日期不联动下拉框,下拉框联动问题 赋值时候失效
- oracle脱机备份文件拒绝访问,如何解决备份文件夹拒绝访问问题
- python怎么将输入的数字变成列表_Python键盘输入转换为列表的实例
- 通过webpack配置vue项目页面title
- Faster R-CNN论文笔记——FR
- Hello World With JBoss Modules