以Student、Class、Grade为例,web中要显示学生基本信息,以及班级名称和年级名称。
请见数据库关系模型:
我这里介绍.Net4.0提供的动态类型和Json.net配合完成此项任务
1.创建“Ado.net实体数据模型”
2.创建一般处理程序GetDataHandler.ashx,作为后台提供数据
- usingSystem;
- usingSystem.Collections.Generic;
- usingSystem.Linq;
- usingSystem.Web;
- usingModels.MySchool;
- usingSystem.Dynamic;
- usingNewtonsoft.Json;
- namespaceJsonWeb.ajaxdata{
- ///<summary>
- ///GetDataHandler的摘要说明
- ///</summary>
- publicclassGetDataHandler:IHttpHandler{
- publicvoidProcessRequest(HttpContextcontext){
- switch(context.Request["action"].ToLower()){
- case"getstudentlist":GetStudentList(context);break;
- }
- }
- privatevoidGetStudentList(HttpContextcontext){
- MySchoolEntitiesdc=newMySchoolEntities();
- varquery=
- fromstuindc.Student
- joinclsindc.Classonstu.ClassIDequalscls.ClassID
- //wherecls.GradeID==1//可以添加的条件信息
- orderbystu.StudentID
- selectnew{stu,cls};
- //总记录数
- inttotal=query.Count();
- //分页信息
- intpage=Convert.ToInt32(context.Request["page"]);
- introws=Convert.ToInt32(context.Request["rows"]);
- query=query.Skip((page-1)*rows).Take(rows);
- //创建动态类型
- List<dynamic>stuList=newList<dynamic>();
- foreach(variteminquery){
- dynamicstu=newExpandoObject();
- stu.StudentId=item.stu.StudentID;
- stu.StudentName=item.stu.StudentName;
- stu.GradeName=item.cls.Grade.GradeName;
- stu.ClassName=item.cls.ClassName;
- stuList.Add(stu);
- }
- //包装datagrid所需数据
- dynamicdataJson=newExpandoObject();
- dataJson.rows=stuList;
- dataJson.total=total;
- //返回json内容
- stringstrJson=JsonConvert.SerializeObject(dataJson);
- context.Response.ContentType="text/json";
- context.Response.Write(strJson);
- }
- publicboolIsReusable{
- get{
- returnfalse;
- }
- }
- }
- }