I’m having problems data binding multiple tables in one teir of children. So say for instance I have 5 tables.
contracts
members
phoneassessments
homeassessments
personalassessments
Each Assessment table has the referencing MemberID and I need to print all three types of assessments in the tiers directly under Members, in other words to look like this.
Contract 1
Member 1
Home Assessment 1
Home Assessment 2
Phone Assessment 1
Personal Assessment 1
etc
Member 2
The code I have is…
Html.Telerik().TreeView()
.Name("TreeName")
.BindTo(Model, mappings =>
{
mappings.For<SMTXEFMVCModel.Contract>(binding => binding
.ItemDataBound((item, contract) =>
{
item.Text = contract.Description;
item.SpriteCssClasses = ("icon-contracts");
})
.Children(Contract => Contract.Members));
mappings.For<SMTXEFMVCModel.Member>(binding => binding
.ItemDataBound((item, member) =>
{
item.Text = member.FirstName + " " + member.LastName;
item.SpriteCssClasses = ("icon-members");
}));
})
)
So my question is, what comes next? What’s the syntax?
I can’t help but think it will look something like this.
Html.Telerik().TreeView()
.Name("TreeName")
.BindTo(Model, mappings =>
{
mappings.For<SMTXEFMVCModel.Contract>(binding => binding
.ItemDataBound((item, contract) =>
{
item.Text = contract.Description;
item.SpriteCssClasses = ("icon-contracts");
})
.Children(Contract => Contract.Members));
mappings.For<SMTXEFMVCModel.Member>(binding => binding
.ItemDataBound((item, member) =>
{
item.Text = member.FirstName + " " + member.LastName;
item.SpriteCssClasses = ("icon-members");
{)
.Children(Members => Members.Assessments));
mappings.For<(SMTXEFMVCModel.HomeAssessments,SMTXEFMVCModel.PhoneAssessments,
SMTXEFMVCModel.PersonalAssessments)>(binding => binding
.ItemDataBound((item, assessments) =>
{
item.Text = HomeAssessments.AssessmentID.ToString()
item.Text = PhoneAssessments.AssessmentID.ToString()
item.Text = PersonalAssessments.AssessmentID.ToString()
}));
})
)
Here’s the relevant ActionResult for my controller
public ActionResult TreeView()
{
var ctx = new SMTXContext();
var Contracts = ctx.Contracts.ToList();
return View(Contracts);
}
which I use in my view as an IEnumerable to Strongly type the tables from the model. (The below line is the first line in my view.
@model IEnumerable<SMTXEFMVCModel.Contract>
Warning, this “solution” isn’t using the databinding version of the telerik treeview, but for anyone seeking to nest multiple tables into a single tier in the treeview, it seems to be a likely candidate.