Моя таблица данных содержит несколько древовидных структур списков, отсортированных по UserGroupID, поля имеют следующий вид:
PKID (первичный ключ), PK_ID (дочерний идентификатор), PK_ParentID (родительский идентификатор), UserGroupID, TextField.
Когда я выбираю один из UserGroupID из выпадающего списка, Kendo Treelist может отображать список дерева соответственно. Но когда я хочу обновить TextField, это кажется противоречивым. Так как model.id - это дочерний идентификатор, а не первичный ключ. Если я использую первичный идентификатор в качестве model.id, древовидный список не может соответствовать иерархической структуре. Я попытался использовать обновление SQLstring с помощью комбинированных ключей PK_ID и UserGroupID на стороне сервера, но модель ничего не возвращает, а ModelState.IsValid имеет значение false.
Есть ли какое-либо простое решение для работы около? заранее спасибо. Вот кодекс. Вид
@(Html.Kendo().TreeList<WebApplication1.Models.SYS_MenuGroup>()
.Name("treelist")
.AutoBind(false) //prevents initial binding
.Toolbar(tb =>
{
tb.Save();
tb.Cancel();
})
.Columns(co =>
{
co.Add().Field(e => e.PKID);
co.Add().Field(e => e.PK_ID);
co.Add().Field(e => e.PK_GroupID);
co.Add().Field(e => e.TextField);
co.Add().Field(e => e.Checked);
})
.Editable(e => e.Mode(TreeListEditMode.InCell).Move(false))
.DataSource(datasource => datasource
.Batch(true)
.Read(read => read.Action("MenuGroup_Read", "SYS_MenuGroup"))
.Create(create => create.Action("Create", "SYS_MenuGroup"))
.Update(update => update.Action("Update", "SYS_MenuGroup"))
.Destroy(destroy => destroy.Action("Destroy", "SYS_MenuGroup"))
.Model(m =>
{
m.Id(f => f.PK_ID);
m.ParentId (f => f.ParentID).DefaultValue(0);
m.Field(f => f.PKID).Editable(false);
m.Field(f => f.PK_ID).Editable(false);
m.Field(f => f.PK_GroupID).Editable(false);
m.Field(f => f.TextField).Editable(false);
m.Field(f => f.Checked);
})
)
)
Контроллер
public ActionResult Update([DataSourceRequest] DataSourceRequest request, SYS_MenuGroup myMenuGroup)
{
if (ModelState.IsValid) ----return false, and all fields return null value
{
using (var db = new BaseModel())
{
var entity = new SYS_MenuGroup
{
PK_GroupID= myMenuGroup.PK_GroupID,
PKID=myMenuGroup.PKID,
Checked=myMenuGroup.Checked
};
db.SYS_MenuGroup.Attach(entity);
db.Entry(entity).State = EntityState.Modified;
db.SaveChanges();
}
}
return Json(new[] { myMenuGroup }.ToDataSourceResult(request, ModelState));
}