C# Telerik Treeview数据绑定
我在一个孩子区绑定多个表时遇到问题。比如说我有5张桌子C# Telerik Treeview数据绑定,c#,asp.net-mvc,telerik,C#,Asp.net Mvc,Telerik,我在一个孩子区绑定多个表时遇到问题。比如说我有5张桌子 contracts members phoneassessments homeassessments personalassessments 每个评估表都有引用MemberID,我需要在Members下的层中直接打印所有三种类型的评估,换句话说,如下所示 Contract 1 Member 1 Home Assessment 1 Home Assessment 2 Phone Ass
contracts
members
phoneassessments
homeassessments
personalassessments
每个评估表都有引用MemberID,我需要在Members下的层中直接打印所有三种类型的评估,换句话说,如下所示
Contract 1
Member 1
Home Assessment 1
Home Assessment 2
Phone Assessment 1
Personal Assessment 1
etc
Member 2
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()
}));
})
)
我的密码是
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");
}));
})
)
在我的视图中,我使用它作为IEnumerable来从模型中强类型表。(在我看来,下面这一行是第一行
@model IEnumerable<SMTXEFMVCModel.Contract>
@model IEnumerable
如果您的类彼此之间有正确的关系,它应该简单到:
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(member => member.Assessments));
mappings.For<MSMTXEFMVCModel.Assessments>(binding => binding
.ItemDataBound((item, assessments) =>
{
item.Text = assessments.AssessmentType;
...
}));
})
Html.Telerik().TreeView()
.名称(“TreeName”)
.BindTo(模型,映射=>
{
mappings.For(binding=>binding
.ItemDataBound((项目,合同)=>
{
item.Text=合同描述;
item.spritecsclasses=(“图标合同”);
})
.儿童(合同=>合同成员);
mappings.For(binding=>binding
.ItemDataBound((项目,成员)=>
{
item.Text=member.FirstName+“”+member.LastName;
item.spritecsclass=(“图标成员”);
})
.儿童(成员=>成员评估);
mappings.For(binding=>binding
.ItemDataBound((项目,评估)=>
{
item.Text=assessments.AssessmentType;
...
}));
})
我说这应该是因为Telerik控件的确切功能在你推进正常边界时往往变得“模糊”,特别是像MVC控件这样的新控件
我相信您已经看过了这些示例,但是文档中没有显示如何执行您尝试执行的操作的确切示例。我已经使用上述代码实现了这一点,但是我的模型和类的设置可能与您的不同。警告,这是“解决方案”没有使用telerik treeview的数据绑定版本,但是对于任何试图将多个表嵌套到treeview的一个层中的人来说,它似乎是一个很可能的候选
@(
Html.Telerik().TreeView()
.Name("SeniorMetrix")
.Items(member => {
foreach (var member1 in members)
member.Add()
.Text(member1.FirstName.ToString())
.SpriteCssClasses("icon-members")
.Items(occurance =>
{
//lets print In-Home Assessments first
foreach (var inhomeassessment1 in inHomeAssessments)
if (inhomeassessment1.MemberID == member1.MemberID)
{
occurance.Add()
.Text("In-Home Assessment #" + inhomeassessment1.InHomeAssessmentID.ToString())
.SpriteCssClasses("icon-assessments");
}
//now we print Telephonic Assessments
foreach (var telephonicassessment1 in telephonicAssessments)
if (telephonicassessment1.MemberID == member1.MemberID)
{
occurance.Add()
.Text("Telephonic Assessment #" + telephonicassessment1.TelephonicAssessmentID.ToString())
.SpriteCssClasses("icon-phone");
}
//finally, let's print Episodes
foreach (var episode1 in episodes)
if (episode1.MemberID == member1.MemberID)
{
occurance.Add()
.Text("Episode #" + episode1.EpisodeID.ToString())
.SpriteCssClasses("icon-episodes")
.Items(assessment =>
{
foreach (var assessment1 in Episodes)
if (assessment1.EpisodeID == episode1.EpisodeID)
{
if (assessment1.AssessmentTypeID == 1)
{
assessment.Add()
.Text("Admission Assessment #" + afeassessment1.AssessmentID.ToString())
.SpriteCssClasses("icon-assessment");
}
if (assessment1.AssessmentTypeID == 2)
{
assessment.Add()
.Text("Interum Assessment #" + assessment1.AssessmentID.ToString())
.SpriteCssClasses("icon-assessment");
}
if (assessment1.AssessmentTypeID == 3)
{
assessment.Add()
.Text("Discharge Assessment #" + assessment1.AssessmentID.ToString())
.SpriteCssClasses("icon-assessment");
}
if (assessment1.AssessmentTypeID == 4)
{
assessment.Add()
.Text("Followup Assessment #" + assessment1.AssessmentID.ToString())
.SpriteCssClasses("icon-assessment");
}
}
});
}});
}))
这将列出各个成员的所有评估(如果我将所有评估存储在一个表中,这将是非常好的,但我正在查看3个不同的评估表(电话、电话、个人)进入这一层。我需要所有三个层的映射。我将编辑我的帖子,以显示我觉得它可能会是什么样子,尽管我无法让它工作。如果你的模型为成员正确设置,它似乎可以工作。评估。你能发布更多关于模型结构的信息吗?你到底想知道什么?我对一些术语相当陌生。您需要表名、关系(1到多),从实体框架中的模型创建的类名?是的,EF信息。每个表都有自己的类吗?它有自己的上下文吗?实现更新的代码时会显示什么?每个表都有自己的类。每个表都没有自己的上下文(这将在控制器中定义?)目前在控制器中,我传递了treeview(契约)中使用的第一个上下文,这仍然让我可以深入到我想要的地方。我将使用treeview的控制器操作结果更新帖子。更新的代码不会调试,多重for映射的语法非常错误。:(你真是太狡猾了,对条件句的思考很好。很高兴你找到了让它对你有用的方法。
@(
Html.Telerik().TreeView()
.Name("SeniorMetrix")
.Items(member => {
foreach (var member1 in members)
member.Add()
.Text(member1.FirstName.ToString())
.SpriteCssClasses("icon-members")
.Items(occurance =>
{
//lets print In-Home Assessments first
foreach (var inhomeassessment1 in inHomeAssessments)
if (inhomeassessment1.MemberID == member1.MemberID)
{
occurance.Add()
.Text("In-Home Assessment #" + inhomeassessment1.InHomeAssessmentID.ToString())
.SpriteCssClasses("icon-assessments");
}
//now we print Telephonic Assessments
foreach (var telephonicassessment1 in telephonicAssessments)
if (telephonicassessment1.MemberID == member1.MemberID)
{
occurance.Add()
.Text("Telephonic Assessment #" + telephonicassessment1.TelephonicAssessmentID.ToString())
.SpriteCssClasses("icon-phone");
}
//finally, let's print Episodes
foreach (var episode1 in episodes)
if (episode1.MemberID == member1.MemberID)
{
occurance.Add()
.Text("Episode #" + episode1.EpisodeID.ToString())
.SpriteCssClasses("icon-episodes")
.Items(assessment =>
{
foreach (var assessment1 in Episodes)
if (assessment1.EpisodeID == episode1.EpisodeID)
{
if (assessment1.AssessmentTypeID == 1)
{
assessment.Add()
.Text("Admission Assessment #" + afeassessment1.AssessmentID.ToString())
.SpriteCssClasses("icon-assessment");
}
if (assessment1.AssessmentTypeID == 2)
{
assessment.Add()
.Text("Interum Assessment #" + assessment1.AssessmentID.ToString())
.SpriteCssClasses("icon-assessment");
}
if (assessment1.AssessmentTypeID == 3)
{
assessment.Add()
.Text("Discharge Assessment #" + assessment1.AssessmentID.ToString())
.SpriteCssClasses("icon-assessment");
}
if (assessment1.AssessmentTypeID == 4)
{
assessment.Add()
.Text("Followup Assessment #" + assessment1.AssessmentID.ToString())
.SpriteCssClasses("icon-assessment");
}
}
});
}});
}))