数据表编辑器 - Field.Options.Where 语法
DataTables Editor - Field.Options.Where syntax
我的项目跟踪系统需要一些改进。目前,每个用户都可以为自己分配一堆项目并跟踪他们在这些项目上的时间。
我正在尝试将 where 条件添加到我的选项列表中,人们可以在其中添加他们的时间。目前,人们可以 select 所有项目。对于很多项目来说这可能有点令人厌烦,所以我想要一个 Where
声明来将他们的选择限制在他们自己的项目上。
这是有问题的代码段:
.Field(new Field("ProjectEntry.IdProject")
.Options(new Options()
.Table("View_User_Project")
.Value("IdProject")
.Label("Name")
.Where("View_User_Project", "View_User_Project.IdUser", "=", idUser) // TODO Find out what's going on
)
.Validator(Validation.NotEmpty())
)
这个"Where"方法只接受一个参数,一种Action<Query>
类型的参数。我从未见过使用这种语法的 Where
语句示例。
有人可以给我举个例子吗?
完整数据库代码:
var context = HttpContext.Current;
var idUser = Utility.GetIdUser(context);
var request = context.Request;
using (var db = Utility.GetDb())
{
var editor = new Editor(db, "ProjectEntry", "IdProjectEntry")
.Model<ProjectEntryModel>("ProjectEntry")
.Model<ProjectModel>("Project")
.Field(new Field("ProjectEntry.IdProject")
.Options(new Options()
.Table("View_User_Project")
.Value("IdProject")
.Label("Name")
.Where("View_User_Project", "View_User_Project.IdUser", "=", idUser) // TODO Find out what's going on
)
.Validator(Validation.NotEmpty())
)
.Field(new Field("ProjectEntry.IdUser"))
.Field(new Field("ProjectEntry.TimeWorked")
.Validator(Validation.NotEmpty())
.Validator(Validation.Numeric())
)
.Field(new Field("ProjectEntry.TimestampWeek")
.Validator(Validation.NotEmpty())
)
.LeftJoin("Project", "Project.IdProject", "=", "ProjectEntry.IdProject")
.Where("ProjectEntry.IdUser", idUser, "=");
editor.PreCreate += (sender, e) => editor.Field("ProjectEntry.IdUser").SetValue(idUser);
var response = editor.Process(request).Data();
return Json(response);
}
嗯,很短。原来你需要一个匿名函数来编辑查询对象。
示例:
.Field(new Field("UserProject.IdProject")
.Options(new Options()
.Table("View_User_Project")
.Value("IdProject")
.Label("Name")
.Where((q) =>
{
q.Where("View_User_Project.IdUser", idUser);
}
)
)
.Validator(Validation.NotEmpty())
)
我的项目跟踪系统需要一些改进。目前,每个用户都可以为自己分配一堆项目并跟踪他们在这些项目上的时间。
我正在尝试将 where 条件添加到我的选项列表中,人们可以在其中添加他们的时间。目前,人们可以 select 所有项目。对于很多项目来说这可能有点令人厌烦,所以我想要一个 Where
声明来将他们的选择限制在他们自己的项目上。
这是有问题的代码段:
.Field(new Field("ProjectEntry.IdProject")
.Options(new Options()
.Table("View_User_Project")
.Value("IdProject")
.Label("Name")
.Where("View_User_Project", "View_User_Project.IdUser", "=", idUser) // TODO Find out what's going on
)
.Validator(Validation.NotEmpty())
)
这个"Where"方法只接受一个参数,一种Action<Query>
类型的参数。我从未见过使用这种语法的 Where
语句示例。
有人可以给我举个例子吗?
完整数据库代码:
var context = HttpContext.Current;
var idUser = Utility.GetIdUser(context);
var request = context.Request;
using (var db = Utility.GetDb())
{
var editor = new Editor(db, "ProjectEntry", "IdProjectEntry")
.Model<ProjectEntryModel>("ProjectEntry")
.Model<ProjectModel>("Project")
.Field(new Field("ProjectEntry.IdProject")
.Options(new Options()
.Table("View_User_Project")
.Value("IdProject")
.Label("Name")
.Where("View_User_Project", "View_User_Project.IdUser", "=", idUser) // TODO Find out what's going on
)
.Validator(Validation.NotEmpty())
)
.Field(new Field("ProjectEntry.IdUser"))
.Field(new Field("ProjectEntry.TimeWorked")
.Validator(Validation.NotEmpty())
.Validator(Validation.Numeric())
)
.Field(new Field("ProjectEntry.TimestampWeek")
.Validator(Validation.NotEmpty())
)
.LeftJoin("Project", "Project.IdProject", "=", "ProjectEntry.IdProject")
.Where("ProjectEntry.IdUser", idUser, "=");
editor.PreCreate += (sender, e) => editor.Field("ProjectEntry.IdUser").SetValue(idUser);
var response = editor.Process(request).Data();
return Json(response);
}
嗯,很短。原来你需要一个匿名函数来编辑查询对象。
示例:
.Field(new Field("UserProject.IdProject")
.Options(new Options()
.Table("View_User_Project")
.Value("IdProject")
.Label("Name")
.Where((q) =>
{
q.Where("View_User_Project.IdUser", idUser);
}
)
)
.Validator(Validation.NotEmpty())
)