日期:2014-05-20 浏览次数:20942 次
if (context.Request.RequestType == "POST") { //设置行为参数 string orderString = (context.Request.Form["orderby"].ToString());//排序 string order = "ascending";//排序:升序 string orderBy = (!string.IsNullOrEmpty(orderString)) ? orderString.Substring(0, orderString.Length - 2) : "ProductNo";//要排序的字段,如果为空,默认为"ProductNo" 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;//跳过记录数 //获取数据 StockAccountModel model = new StockAccountModel(); model.CompanyCD = companyCD; model.StartDate = context.Request.Form["txtStartDate"].Trim(); //这里是把返回的DataTable转换为XML XElement dsXML = ConvertDataTableToXML(StockAccountBus.GetStockStructAnalysis(model, "", "")); //linq排序 var dsLinq = (order == "ascending") ? (from x in dsXML.Descendants("Data") orderby x.Element(orderBy).Value ascending select new DataSourceModel()//下面有这个Model { ProductNo = x.Element("ProductNo").Value, ProductName = x.Element("ProductName").Value, Specification = x.Element("Specification").Value, UnitID = x.Element("UnitID").Value, ProductCount = x.Element("ProductCount").Value, TaxTotalPrice = x.Element("TaxTotalPrice").Value, StockBizhong = x.Element("StockBizhong").Value, ZanYaTotalPrice = x.Element("ZanYaTotalPrice").Value, OutCountPerDay = x.Element("OutCountPerDay").Value, OutSellCountPerDay = x.Element("OutSellCountPerDay").Value, }) : (from x in dsXML.Descendants("Data") orderby x.Element(orderBy).Value descending select new DataSourceModel() { ProductNo = x.Element("ProductNo").Value, ProductName = x.Element("ProductName").Value, Specification = x.Element("Specification").Value, UnitID = x.Element("UnitID").Value, ProductCount = x.Element("ProductCount").Value, TaxTotalPrice = x.Element("TaxTotalPrice").Value, StockBizhong = x.Element("StockBizhong").Value, ZanYaTotalPrice = x.Element("ZanYaTotalPrice").Value, OutCountPerDay = x.Element("OutCountPerDay").Value, OutSellCountPerDay = x.Element("OutSellCountPerDay").Value, }); int totalCount = dsLinq.Count(); 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()));//转换为Json返回 sb.Append("}"); context.Response.ContentType = "text/plain"; context.Response.Write(sb.ToString()); context.Response.End(); } } /// <summary> /// datatabletoxml /// </summary> /// <param name="xmlDS"></param> /// <returns></returns> private XElement ConvertDataTableToXML(DataTable xmlDS) { StringWriter sr = new StringWriter(); xmlDS.TableName = "Data"; xmlDS.WriteXml(sr, System.Data.XmlWriteMode.IgnoreSchema, true); string contents = sr.ToString(); return XElement.Parse(contents); } public static string ToJSON(object obj) { JavaScriptSerializer serializer = new JavaScriptSerializer(); return serializer.Serialize(obj); } public bool IsReusable { get { return false; } } //数据源结构 public class DataSourceModel { public string ProductNo { get; set; } public string ProductName { get; set; } public string Specification { get; set; } public string UnitID { get; set; } public string StorageName { get; set; } public string ProductCount { get; set; } public string TaxTotalPrice { get; set; } public string StockBizhong { get; set; } public string ZanYaTotalPrice { get; set; } public string OutCountPerDay { get; set; } public string OutSellCountPerDay { get; set; } }