日期:2014-05-20 浏览次数:21086 次
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; }
}