问题描述
我在单位表上引用了用户表。
我在UnitsRow上添加了一个LookUpScript,如下所示:
[displayName("Lecturer"),NotNull,ForeignKey("[dbo].[Users]","UserId"),LeftJoin("jLecturer"),TextualField("Lecturer")]
[LookupEditor(typeof(UserRow),FilterField = "UserType",FilterValue = UserTypes.Lecturer)]
public Int32? LecturerId
{
get { return Fields.LecturerId[this]; }
set { Fields.LecturerId[this] = value; }
}
UserType的类型为enum,如下所示:
[EnumKey("SmartAttendance.UserTypes")]
public enum UserTypes
{
[Description("Admin")] Admin = 1,[Description("Lecturer")] Lecturer = 2,[Description("Student")] Student = 3
}
但是,当我添加新单元/编辑现有单元时,下拉列表为空。我在数据库中有3个用户,一个用户的类型为UserTypes.Lecturer
请告知我所缺少的内容。
解决方法
为讲座(admin,学生)创建一个新的查找类
namespace my.abc
{
using Serenity.ComponentModel;
using Serenity.Data;
using Serenity.Web;
using System.Linq;
using BaseRow = Entities.UserRow;
[LookupScript]
public sealed class LecturerRow: RowLookupScript<BaseRow>
{
private static BaseRow.RowFields fld => BaseRow.Fields;
public LecturerRow()
{
IdField = fld.Id.PropertyName;
TextField = fld.Userdetails.PropertyName;
}
protected override void PrepareQuery(SqlQuery query)
{
query
.Select(fld.Id)
.Select(fld.user,fld.username,fld.UserTypes)
.Where(fld.UserTypes== 2);
}
protected override void ApplyOrder(SqlQuery query)
{
query
.OrderBy(fld.username );enter code here
}
}
}
,
IMHO应该在UserRow.cs的UserType字段中添加[LookupInclude]属性。
HTH 汉尼斯