Hi All,
I am having a requirement to load a treelist when i click on any of the node in treeview (i.e. to bind treelist on treeview expand event).
I tried various method but nothing worked for me (even i try to bind dummy data)
My code is as below
<div class="control-container">
@(Html.Kendo().TreeView()
.Name("treeview-kendo")
.TemplateId("treeview")
.DataSource(dataSource => dataSource
.Model(m => m
.Id("parentId")
.HasChildren("HasChildren"))
.Read(read => read
.Action("BindingTreeView", "BrowseProgram")))
.DataTextField("ShortName")
.Deferred()
.Events(events => events.Expand(
@<text>
function (e) {
var data = this.dataItem(e.node);
if (data.id != null) {
$.ajax({
url: "/BrowseProgram/GetContractData",
type: "POST",
dataType: "json",
data: {
'levelId': data.id
},
success: function (response) {
if (response != null) {
var dataSourcer = new kendo.data.TreeListDataSource({
data: response
});
$("#treelist").kendoTreeList({
dataSource: dataSourcer
});
}
else {
alert("Something went wrong");
}
},
error: function () {
alert("Some error occurred!!");
}
});
}
}
</text>
))
)
</div>
Controller Code
public JsonResult GetContractData(int? levelId, [DataSourceRequest] DataSourceRequest request)
{
if (levelId != null)
{
IEnumerable<
ContractListViewModel
> objContractListViewModel = null;
long contactId = 331489;
string userType = "Secured";
objContractListViewModel = ApiHelper.GetRequest<
IEnumerable
<ContractListViewModel>>(string.Format(Constants.ApiUrls.TreeViewGetLevelContractsWithCacheLevelContractInfo, levelId, contactId, userType));
var result = objContractListViewModel.AsQueryable().ToTreeDataSourceResult(request, f => f.ContractId, f => f.ParentContractId, f => f);
return Json(result, JsonRequestBehavior.AllowGet);
}
else
return null;
}
public JsonResult BindingTreeView(int? parentId)
{
IEnumerable<
TreeViewModel
> objTreeView = null;
long contactId = 331489;
string userType = "Secured";
if (parentId != null)
{
objTreeView = ApiHelper.GetRequest<
IEnumerable
<TreeViewModel>>(string.Format(Constants.ApiUrls.TreeViewGetChildLevelsFiltered, parentId, contactId, userType));
}
else
{
objTreeView = ApiHelper.GetRequest<
IEnumerable
<TreeViewModel>>(string.Format(Constants.ApiUrls.GetTreeViewRootLevelsAndContracts, contactId, userType));
}
var result = objTreeView.Select(p => new
{
parentId = p.LevelId,
p.ShortName,
p.HasChildren,
p.WrapUpIndicator
});
return Json(result, JsonRequestBehavior.AllowGet);
}
Kendo Treelist
@(Html.Kendo().TreeList<
Aon.Ars.Retail.AonWrap.Web.Models.ContractListViewModel
>
()
.Name("treelist")
.Columns(columns =>
{
columns.Add().Field(e => e.ContractNumber).Title(@AonWrapStringResources.Generic_Contract_Number);
columns.Add().Field(e => e.ContractorName).Title(@AonWrapStringResources.Generic_Contractor);
columns.Add().Field(e => e.ContractType).Title(@AonWrapStringResources.BrowseProgram_TypeStatus).TemplateId(Constants.ContractTypeTemplate).Width(100);
columns.Add().Field(e => e.VerifiedInsuranceCostStatus).Title(@AonWrapStringResources.BrowseProgram_VerifiedInsCost).TemplateId(Constants.VerifiedTemplate).Width(100);
columns.Add().Field(e => e.EnrollmentStatus).Title(@AonWrapStringResources.Generic_Label_Enroll).TemplateId(Constants.EnrollmentTemplate).Width(90);
columns.Add().Field(e => e.PayrollStatus).Title(@AonWrapStringResources.Generic_Label_Payroll).TemplateId(Constants.PayrollTemplate).Width(90);
columns.Add().Field(e => e.COIStatus).Title(@AonWrapStringResources.BrowseProgram_ReqCOIs).TemplateId(Constants.COIStatusTemplate).Width(90);
columns.Add().Field(e => e.WorkCompleteStatus).Title(@AonWrapStringResources.Generic_Label_Work_Complete).TemplateId(Constants.WorkTemplate).Width(105);
})
.Sortable()
.Height(540)
.Deferred()
)