芜湖炎黄做的网站,北京高端网站公司哪家好,给我一个网站,网站上的中英文切换是怎么做的起源 最初#xff0c;这个问题是知识星球内的一个网友提出的#xff0c;如何在FineUIMvc中展现复杂的列数据#xff1f; 在FineUIPro中#xff0c;我们都知道有一个 TemplateField 模板列可以使用#xff0c;我们只需要在后台定义一个 C# 方法#xff0c;就可以返回任意想…起源 最初这个问题是知识星球内的一个网友提出的如何在FineUIMvc中展现复杂的列数据 在FineUIPro中我们都知道有一个 TemplateField 模板列可以使用我们只需要在后台定义一个 C# 方法就可以返回任意想要的数据。 可是在FineUIMvc中没有这么个列类型那又如何展示复杂数据呢 解决办法 先来看下数据模型 public class Student
{[Key]public int Id { get; set; }[Required][Display(Name 姓名)][StringLength(20)]public string Name { get; set; }[Required][Display(Name 性别)]public int Gender { get; set; }[Required][Display(Name 入学年份)]public int EntranceYear { get; set; }[Required][Display(Name 是否在校)]public bool AtSchool { get; set; }[Required][Display(Name 所学专业)][StringLength(200)]public string Major { get; set; }[Required][Display(Name 分组)]public int Group { get; set; }[Display(Name 注册日期)][DisplayFormat(DataFormatString {0:yyyy-MM-dd})]public DateTime? EntranceDate { get; set; }[Display(Name 爱好)]public string[] Hobby { get; set; }[Display(Name 家庭信息)]public Family Family { get; set; }} 通过一个静态方法获取模拟数据 public class StudentHelper
{public static IEnumerableStudent GetSimpleStudentList(){var students new ListStudent { new Student {Id 101,Name 张萍萍,Gender 0,EntranceYear 2000,AtSchool true,Major 材料科学与工程系,Group 1,EntranceDate DateTime.Parse(2000-09-01),Hobby new string[]{reading,basketball,travel},Family new Family {FatherName 张国栋,MotherName 李梅}},new Student {Id 102,Name 陈飞,Gender 1,EntranceYear 2000,AtSchool false,Major 化学系,Group 1,EntranceDate DateTime.Parse(2001-09-01),Hobby new string[]{reading,basketball},Family new Family {FatherName 陈国梁,MotherName 周兰}},new Student {Id 103,Name 董婷婷,Gender 0,EntranceYear 2000,AtSchool true,Major 化学系,Group 1,EntranceDate DateTime.Parse(2008-09-01),Hobby new string[]{reading,basketball,music},Family new Family {FatherName 董辅仁,MotherName 刘静}},new Student {Id 104,Name 刘国,Gender 1,EntranceYear 2002,AtSchool false,Major 化学系,Group 2,EntranceDate DateTime.Parse(2002-09-01),Hobby new string[]{reading,music},Family new Family {FatherName 刘房龄,MotherName 湘采荷}},new Student {Id 105,Name 康颖颖,Gender 0,EntranceYear 2008,AtSchool true,Major 数学系,Group 2,EntranceDate DateTime.Parse(2008-09-01),Hobby new string[]{travel,movie,music},Family new Family {FatherName 康有为,MotherName 陆小妹}}};return students;}} 视图定义也很简单 (F.Grid().IsFluid(true).CssClass(blockpanel).Title(表格).ShowHeader(true).ShowBorder(true).ID(Grid1).DataIDField(Id).DataTextField(Name).Columns(F.RowNumberField(),F.RenderFieldFor(m m.Name),F.RenderFieldFor(m m.Gender).RendererFunction(renderGender).Width(80),F.RenderFieldFor(m m.EntranceYear),F.RenderCheckFieldFor(m m.AtSchool).RenderAsStaticField(true),F.RenderFieldFor(m m.Major).RendererFunction(renderMajor).ExpandUnusedSpace(true),F.RenderFieldFor(m m.Group).RendererFunction(renderGroup).Width(80),F.RenderFieldFor(m m.EntranceDate)).DataSource(Model)) 现在我们希望能在表格中显示这个用户的爱好和家庭信息最终的页面效果如图所示 这里我们需要用到继承从最初的模型类 Student 继承因为这个继承类只在视图层用到我们命名为 StudentViewModel public class StudentViewModel : Student
{[Display(Name 爱好)]public string HobbyInfo{get{Liststring hobbyNames new Liststring();foreach (var hobby in Hobby){var hobbyName ;switch (hobby){case reading:hobbyName 读书;break;case basketball:hobbyName 篮球;break;case travel:hobbyName 旅游;break;case movie:hobbyName 电影;break;case music:hobbyName 音乐;break;}hobbyNames.Add(hobbyName);}return String.Join(, hobbyNames.ToArray());}}[Display(Name 家庭信息)]public string FamilyInfo{get{return 父亲 Family.FatherName 母亲 Family.MotherName;}}} 可以看到在这个继承的模型类中扩展了两个属性 HobbyInfo 和 FamilyInfo其中定义了相应的业务逻辑。 获取数据时需要转为相应的视图模型类 public ActionResult Index()
{var students new ListStudentViewModel();foreach (var student in StudentHelper.GetSimpleStudentList()){students.Add(new StudentViewModel{Id student.Id,Name student.Name,Gender student.Gender,EntranceYear student.EntranceYear,AtSchool student.AtSchool,Major student.Major,Group student.Group,EntranceDate student.EntranceDate,Hobby student.Hobby,Family student.Family});}return View(students);
} 最后是Razor视图定义 (F.Grid().ID(Grid1).IsFluid(true).CssClass(blockpanel).ShowBorder(true).ShowHeader(true).Title(表格).DataIDField(Id).DataTextField(Name).Columns(F.RenderFieldFor(m m.Name),F.RenderFieldFor(m m.Gender).RendererFunction(renderGender).Width(80),F.RenderFieldFor(m m.EntranceYear),F.RenderCheckFieldFor(m m.AtSchool).RenderAsStaticField(true),F.RenderFieldFor(m m.Major).RendererFunction(renderMajor).Width(150),F.RenderFieldFor(m m.FamilyInfo).Width(220),F.RenderFieldFor(m m.HobbyInfo).ExpandUnusedSpace(true)).DataSource(Model)) 搞定转载于:https://www.cnblogs.com/sanshi/p/9766823.html