0 步骤介绍
1 在子实体的viewmodel中增加,母实体的listvm对象(弹出选择的数据来源)
2 在子实体的vm的init中初始化
3 在子实体的create和edit中,使用selector控件完成页面改造
1 数据库实体
1.1专业实体 Major
/// <summary>
/// 数据实体类:Major Major
/// </summary>
/// <remarks>
/// 专业信息
/// </remarks>
public class Major : TopBasePoco
{
/// <summary>
/// MajorID Major ID
/// </summary>
/// <remarks>
/// 专业编号:
/// </remarks>
[Display(Name = "Major ID")]
[Required( ErrorMessage = "{0}是必填项")]
[StringLength(maximumLength: 50, ErrorMessage ="{0}最大长度不能超过{1}")]
[Key]
[Column("MajorID")]
public new string ID { get; set; }
/// <summary>
/// MajorName Major Name
/// </summary>
/// <remarks>
/// 专业名称:
/// </remarks>
[Display(Name = "Major Name")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(maximumLength: 50, ErrorMessage = "{0}最大长度不能超过{1}")]
[Column("MajorName")]
public string MajorName { get; set; }
}
学生实体
/// <summary>
/// 数据实体类:Student Student
/// </summary>
/// <remarks>
/// 学生信息
/// </remarks>
public class Student : TopBasePoco
{
/// <summary>
/// PackingID Packing ID
/// </summary>
/// <remarks>
/// 装箱信息编号:
/// </remarks>
[Display(Name = "Student ID")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(maximumLength: 50, ErrorMessage = "{0}最大长度不能超过{1}")]
[Key]
[Column("StudentID")]
public new string ID { get; set; }
[Display(Name = "Student Name")]
[StringLength(maximumLength: 50, ErrorMessage = "{0}最大长度不能超过{1}")]
[AllowNull]
public string StudentName { get; set; }
/// <summary>
/// MajorID Major ID
/// </summary>
/// <remarks>
/// 专业编号:
/// </remarks>
[Display(Name = "Major ID")]
[Required(ErrorMessage = "{0}是必填项")]
[StringLength(maximumLength: 50, ErrorMessage = "{0}最大长度不能超过{1}")]
[Column("MajorID")]
public new string MajorID { get; set; }
[Display(Name = "Major ID")]
public Major Major{ get; set; }
}
2 修改StudentVM
//第一步:增加专业listVM对象
public MajorListVM majors { get; set; }
protected override void InitVM()
{
//第二部完成该对象的初始化
majors = new MajorListVM();
majors.CopyContext(this);
}
3 修改student的create view文件
@model Study.ViewModel.BaseData.StudentVMs.StudentVM
@inject IStringLocalizer<Program> Localizer;
<wt:form vm="@Model">
<wt:row items-per-row="ItemsPerRowEnum.Two">
<wt:textbox field="Entity.ID" />
<wt:textbox field="Entity.StudentName" />
@*<wt:combobox field="Entity.MajorID" items="AllMajors"/>*@
<wt:selector list-vm="majors" field="Entity.MajorID" text-bind="majors.EntityList[0].MajorName">
<wt:searchpanel vm="majors">
<wt:row items-per-row="ItemsPerRowEnum.Two">
@*<wt:textbox field="majors.Searcher.ID" />*@
<wt:textbox field="majors.Searcher.MajorName" />
</wt:row>
</wt:searchpanel>
</wt:selector>
</wt:row>
<wt:row align="AlignEnum.Right">
<wt:submitbutton />
<wt:closebutton />
</wt:row>
</wt:form>