分享到:
function GetPageLink(linkPageIndex ,currentPageIndex,text,onclick,url,barMark) { var pageData = "page=";//string.Format("{0}page=", (Request.QueryString.Count == 0) "" : "&") + "{0}";//页码参数 onclick = (onclick != null) "onclick=\"" + onclick + "\"" : ""; onclick = onclick.replace("{pageindex}",linkPageIndex); href = (onclick != null && onclick.indexOf("return false") != -1)"href=\"#" + barMark + "\" ":"href=\"" + url + pageData + linkPageIndex + "\" "; var linkHTML = ""; if(linkPageIndex == currentPageIndex) linkHTML = "<span class=\"current\">" + text + "</span>"; else linkHTML = "<a " + href + onclick + ">" + text + "</a>"; return linkHTML; } 我们在HTML 中这样调用: var pageCount = 15;//每页计数 var totalRecord = 0; var pagerStyle = "flickr";//jPagerBar样式 ShowPageBar("pageDataList1_Pager",//[containerId] "<%= Request.Url.AbsolutePath %>",//[url] {style:pagerStyle,mark:"pageDataList1Mark", totalCount:msg.totalCount,showPageNumber:3,pageCount:pageCount,currentPageIndex:pageIndex,noRecordTip:" 没有记录",preWord:"上一 页",nextWord:"下一页", onclick:"TurnToPage({pageindex});return false;"}//[attr] ); 上面代码中的msg是我最后获取的JSON数据,msg.totalCount是一个总记录的计数,在这里您 可以从msg.data(JSON数据列表)的计数获取,我在此多加这个totalCount只是为了防止测试过程中数据“失真”而引发的bug的掩盖,特此说明。 一般我们还需要一个Handler来获取JSON数据 (Handler1.ashx)已升级: namespace jPagerBar.Handler { /**//// <summary> /// $codebehindclassname$ 的摘要说明 /// </summary> [WebService (Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class Handler1 : IHttpHandler { public void ProcessRequest(HttpContext context) { //获取数据 if (context.Request.RequestType == "POST") { //设置行为参数 string action = context.Request.Form ["action"].ToString();//动作 string kind = (action.StartsWith("g_")) action.Replace("g_", string.Empty) : string.Empty;//分类查找 前缀 string orderString = (context.Request.Form["orderby"].ToString());//排序 string order = "ascending";//排序:升序 string orderBy = (!string.IsNullOrEmpty(orderString)) orderString.Substring (0, orderString.Length - 2) : "ID";//要排序的字段,如果为空,默认为"ID" if (orderString.EndsWith("_d")) { order = "descending";//排序:降序 } int pageCount = int.Parse(context.Request.Form["pageCount"].ToString());//每页显示记录数 int pageIndex = int.Parse(context.Request.Form["pageIndex"].ToString());//当前页 int skipRecord = (pageIndex - 1) * pageCount;//跳过记录数 XElement dsXML = CreateDataSorce();//创建并获取模拟数据源 //获取数据 var dsLinq = (order == "ascending") (from x in dsXML.Descendants("DataTemp") where ((!string.IsNullOrEmpty(kind)) (x.Element("Group").Value == kind) : (x.Element("Group").Value != null)) orderby x.Element (orderBy).Value ascending select new DataSourceModel() { ID = x.Element("ID").Value, Group = x.Element("Group").Value, Colum1 = x.Element ("Colum1").Value, Colum2 = x.Element("Colum2").Value, Colum3 = x.Element("Colum3").Value }) : (from x in dsXML.Descendants("DataTemp") where ((! string.IsNullOrEmpty(kind)) (x.Element("Group").Value == kind) : (x.Element("Group").Value != null)) orderby x.Element(orderBy).Value descending select new DataSourceModel() { ID = x.Element("ID").Value, Group = x.Element("Group").Value, Colum1 = x.Element("Colum1").Value, Colum2 = x.Element ("Colum2").Value, Colum3 = x.Element("Colum3").Value }); int totalCount = dsLinq.Count();//记录总数,在此只起到示范作用 //var dsFinalList = (order == "a") // dsLinq.OrderBy(x=>x.).Skip(skipRecord).Take(pageCount).ToList() : // dsLinq.OrderByDescending(orderby).Skip(skipRecord).Take(pageCount).ToList (); System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append("{"); sb.Append("totalCount:"); sb.Append(totalCount.ToString()); sb.Append (",data:"); sb.Append(ToJSON(dsLinq.Skip(skipRecord).Take(pageCount).ToList())); sb.Append("}"); context.Response.ContentType = "text/plain"; context.Response.Write(sb.ToString()); context.Response.End(); } } //创建数据源(用XML模拟) private XElement CreateDataSorce() { string dataSourceFilePath = HttpContext.Current.Server.MapPath("~/App_Data/DataSource.xml"); if (!File.Exists(dataSourceFilePath)) { //设置模拟数据源 XElement dsInfos = new XElement("jPagerBar"); Random rdn = new Random(); for (int i = 1; i <= 300; i++) { //分类数据(模拟) //string[] groups = new string[] { "G1", "G2", "G3", "G4" }; string guid=Guid.NewGuid().ToString().Replace("-","");//用Guid产生随机代码 //生成模拟数据 XElement dsInfo = new XElement ("DataTemp", new XElement("ID", i.ToString("000")), new XElement("Group", "Group"+rdn.Next(0,5).ToString()), new XElement("Colum1",guid.Substring(0,3) + "_C1 in " + i.ToString()), new XElement("Colum2", guid.Substring(3,3) + rdn.Next(100).ToString() + "_C2 in " + i.ToString()), new XElement("Colum3", guid.Substring(6,3) + rdn.Next (100).ToString() + "_C3 in " + i.ToString()) ); dsInfos.Add(dsInfo);//填充数据 } //保存 dsInfos.Save(dataSourceFilePath); } return XElement.Load (dataSourceFilePath); } public static string ToJSON(object obj) { JavaScriptSerializer serializer = new JavaScriptSerializer(); return serializer.Serialize (obj); } //private static void GetJSON(XElement dsXML) //{ // var dsLinq = (from x in dsXML.Descendants("DataTemp") // select new DataSourceModel() // { // ID = x.Element("ID").Value, // Group = x.Element("Group").Value, // Colum1 = x.Element("Colum1").Value, // Colum2 = x.Element("Colum2").Value, // Colum3 = x.Element("Colum3").Value // }); // int totalCount = dsLinq.Count();//记录总数,在此只起到示范作用,客户端的记录总数可以从JSON数据的data计数获取 // System.Text.StringBuilder sb = new System.Text.StringBuilder(); // sb.Append("{"); // sb.Append("totalCount:"); // sb.Append(totalCount.ToString()); // sb.Append(",data:"); // sb.Append(ToJSON(dsLinq.ToList())); // sb.Append("}"); //} public bool IsReusable { get { return false; } } } //数据源结构 public class DataSourceModel { public string ID { get; set; } public string Group { get; set; } public string Colum1 { get; set; } public string Colum2 { get; set; } public string Colum3 { get; set; } } }
分享到:
Pages: 1 2 3 4
分享到:
上面我用XML模拟了一个数据源,正好顺便尝
试了一下Linq to XML:)如果您是使用.NET2.0的话,也可改成XMLDocument的方式或者从自己的数据源获取。
这里我们看一下基本效果:
基本状态:
热门源码