Welcome

首页 / 脚本样式 / ExtJS / 第二节:ExtJS调用WCF系列-----分页排序列表实现

第二节:ExtJS调用WCF系列-----分页排序列表实现2010-07-17 cnblogs.com xiaozhuang打开第一节中的那个项目,新建一个Paging.aspx的页面来实现分页列表。

这次我们使用一个测试的数据库CompanyInfoDB,里面有两张表,部门和员工,并外键关联,数据库调用采用Linq的Sqlmetal 命令方式,在Visual Studio 2008的命令提示符中输入以下命令:D:Program FilesMicrosoft Visual Studio 9.0VC>sqlmetal /conn:server=172.16.1.52;database=CompanyInfoDB;uid=sa;pwd=sa123456 /map:c:LinqTempCompanyInfoDB.map
/code:c:LinqTempCompanyInfoDB.cs /serialization:Unidirectional

然后把生成的CompayInfo.map 文件和CompanyInfo.cs文件加入到项目中,并添加System.Data.Linq的引用,还要修改一下Web.Config 加入数据库链接字符串和XmlMappingSource文件的位置。

<connectionStrings>
<add name="CompanyInfoDBConnectionString" connectionString="Data Source=172.16.1.52;Initial Catalog=CompanyInfoDB;Persist Security Info=True;User ID=sa;Password=sa123456" providerName="System.Data.SqlClient"/>
</connectionStrings>
<appSettings>
<add key="CompanyInfoDBXmlMappingSource" value="E:ExtJSExtJS调用WCF系列博客源文件ExtJSAndWCFChapter1ExtJSAndWCFChapter1DataBaseCompanyInfoDB.map"/>
</appSettings>

如图:

为了层次更清晰一点,我们新建一个EmployeeBL.cs的类文件来处理Employee的业务逻辑,EmpployeeBL.cs的文件代码如下:

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.Linq.Mapping;
using System.IO;
using System.Linq.Dynamic;
using System.Runtime.Serialization;

namespace ExtJSAndWCFChapter1
{
public class EmployeeBL
{
CompanyInfoDB ctx;

//构造函数
public EmployeeBL()
{
XmlMappingSource xms = XmlMappingSource.FromXml(File.ReadAllText(ConfigurationManager.AppSettings["CompanyInfoDBXmlMappingSource"]));
ctx = new CompanyInfoDB(ConfigurationManager.ConnectionStrings["CompanyInfoDBConnectionString"].ConnectionString, xms);
//ctx.Log = Console.Out;
}

public string GetEmployeePaging(int start, int limit, string sort, string dir)
{
string strJsonSource = "";
var query = from emp in ctx.Employee
select new
{
EmployeeID = emp.EmployeeID,
CnName = emp.CnName,
Sex = emp.Sex,
Age = emp.Age,
Email = emp.Email,
OnWorkDate = emp.OnWorkDate,
DeptName = emp.Department.CnName
};
query = query.OrderBy(sort + " " + dir);
int TotalCount = query.Count(); //共有记录数
int PageNum = start / limit; //共有页数
int PageSize = limit; //每页记录数
query = query.Skip(PageSize * PageNum).Take(PageSize);

string JsonSource = query.ToJSON(); //当前页记录转成JSON格式
strJsonSource = @"{""TotalCount"":""" + TotalCount + "";
strJsonSource = strJsonSource + @""",""EmployeeList"":" + JsonSource + "}";
return strJsonSource;
}
}
}