使用Serenity.is temp

问题描述

我在用户表上为UserType添加了一列。

我在单位表上引用了用户表。

我在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 汉尼斯