올바른 계층 구조로 채우는 List<TreeViewItemModel>()
을 반환하는 컨트롤러에 메서드가 있습니다. 이것은 올바르게 직렬화하는 것으로 보이지만, Treeview를로드 할 때 노드의 첫 번째 레벨 만 계층 구조가 없습니다.원격 데이터에서 부모 및 자식 노드로드
예 :
위의 교육 과정의 각이 그 교육 과정 => TreeViewItemModel
에서 갈 때 나는 기본 개체에 대한 항목으로 추가지고 확인한 아래 2/3 시나리오를 가지고컨트롤러 :
public JsonResult GetAvailableCurricula(string LocationId)
{
LocationId = "1";
if(LocationId != string.Empty)
{
var results = Logic.GetFilteredCurriculum().Select(c => CurriculumToTreeView(c));
return Json(results, JsonRequestBehavior.AllowGet);
}
else
{
return Json(new List<TreeViewItemModel>(),JsonRequestBehavior.AllowGet);
}
}
private TreeViewItemModel CurriculumToTreeView(CurriculumModel c)
{
var tree = new TreeViewItemModel()
{
Id = c.CurriculumId.ToString(),
Text = c.CurriculumName,
HasChildren = c.Scenarios.Any()
};
if (tree.HasChildren)
{
tree.Items = c.Scenarios.Select(scenario =>
new TreeViewItemModel()
{
Text = scenario.Name,
}
).ToList();
}
return tree;
}
보기 :
@(Html.Kendo().TreeView()
.Name("AvailableCurricula")
.DataTextField("Text")
.DataSource(source => source
.Read(read => read
.Action("GetAvailableCurricula", "TraineeAssignments")
.Data("filterAvailableCurricula")
)
)
한 번에 하나의 레벨 대신 하위 개체와 부모를 바인딩하는 데 필요한 추가 단계가 있습니까? 나는 자주 데이터를 새로 고침 할 필요가없는 데이터 세트가 상당히 적기 때문에 각 레벨을 개별적으로/필요시로드하지 않는 것이 좋습니다.
{"Enabled":true,"Expanded":false,"Encoded":true,"Selected":false,"Text":"Operator B","SpriteCssClass":null,"Id":"1","Url":null,"ImageUrl":null,"HasChildren":true,"Checked":false,"Items":[{"Enabled":true,"Expanded":false,"Encoded":true,"Selected":false,"Text":"test 2","SpriteCssClass":null,"Id":null,"Url":null,"ImageUrl":null,"HasChildren":false,"Checked":false,"Items":[],"HtmlAttributes":{},"ImageHtmlAttributes":{},"LinkHtmlAttributes":{}},{"Enabled":true,"Expanded":false,"Encoded":true,"Selected":false,"Text":"Scenario II","SpriteCssClass":null,"Id":null,"Url":null,"ImageUrl":null,"HasChildren":false,"Checked":false,"Items":[],"HtmlAttributes":{},"ImageHtmlAttributes":{},"LinkHtmlAttributes":{}}],"HtmlAttributes":{},"ImageHtmlAttributes":{},"LinkHtmlAttributes":{}}
treeview는 계층 적 데이터 소스를 사용합니다. 직렬화 된 데이터는 어떻게 생겼습니까? – whipdancer
List()을 Treeview에 반환하고 CurriculumToTreeview 메서드에서 계층 구조를 수동으로 설정하고 있습니다. 나는 그 객체들을 사용하는 또 다른 페이지를 가지고 있으며, 그것은 잘 동작한다. 유일한 차이점은 페이지가 ViewBag에서 가져온 로컬 데이터를 사용하며이 데이터가 원격 데이터를 사용한다는 것입니다. 도움이 될 경우 원시 JSON을 내 게시물에 추가합니다. –
Darendal
'TraineeAssignments \ GetAvailableCurricula'를 직접 호출하면 데이터를 가져 옵니까? – whipdancer