私は以下に書かれているように1つの剣道ツリービューを作成しています
@(Html.Kendo().TreeView()
.Name("treeview")
.Template("<a class='edit-link' onclick=javascript:EditNode(#= item.id #) href='\\#'>#= item.text #</a> <a class='add-link' onclick=javascript:AddNode(#= item.id #) href='\\#'>Add</a>")
.HtmlAttributes(new { @class = "demo-section" })
.DataSource(source =>
{
source.Read(read => read.Action("Read_TemplateData", "Role"));
})
)
コントローラーアクションでは、次のように返されます
public ActionResult Read_TemplateData(string id)
{
IEnumerable<KendoTreeviewModel> result;
var AllPrivileges = ContextService.GetAllPrivilege(Evry.Ecompanion.Web.Common.SessionManager.AuthorizedInfo.UserId);
if (string.IsNullOrEmpty(id))
{
result = AllPrivileges.Where(p => p.Id == p.ParentPrivilegeId).Select(p => new KendoTreeviewModel { text = p.Name, id = p.Id,expanded=false, items = GetChilderns(p.Id) }).ToList();
}
else
{
result = AllPrivileges.Where(p => p.ParentPrivilegeId == Convert.ToInt32(id, CultureInfo.InvariantCulture) && p.Id != Convert.ToInt32(id, CultureInfo.InvariantCulture)).Select(p => new KendoTreeviewModel { text = p.Name, id = p.Id}).ToList();
}
return Json(result, JsonRequestBehavior.AllowGet);
}
public List<KendoTreeviewModel> GetChilderns(int id)
{
var AllPrivileges = ContextService.GetAllPrivilege(Evry.Ecompanion.Web.Common.SessionManager.AuthorizedInfo.UserId);
return AllPrivileges.Where(p => p.ParentPrivilegeId == Convert.ToInt32(id, CultureInfo.InvariantCulture) && p.Id != Convert.ToInt32(id, CultureInfo.InvariantCulture)).Select(p => new KendoTreeviewModel { text = p.Name, id = p.Id }).ToList();
}
ビューモデルは次のようになります
public class KendoTreeviewModel
{
[DataMember]
public int id { get; set; }
[DataMember]
public string text { get; set; }
[DataMember]
public bool expanded { get; set; }
[DataMember]
public List<KendoTreeviewModel> items { get; set; }
}
その結果、親リストと子リストは表示されますが、ツリービューのエキスパンダーは表示されません
出力はツリービュー エキスパンダーなしで行われ、親ノードのみが表示されます。誰でも問題を解決するのを手伝ってください。
前もってありがとう、ルドレッシュ