Telerik Treeview DataBinding - PullRequest
       2

Telerik Treeview DataBinding

1 голос
/ 03 августа 2011

У меня проблемы с привязкой данных нескольких таблиц в одной группе детей. Например, у меня есть 5 таблиц.

contracts
members
phoneassessments
homeassessments
personalassessments

Каждая таблица оценок имеет ссылочный идентификатор участника, и мне нужно распечатать все три типа оценок в уровнях непосредственно под Членами, другими словами, чтобы выглядеть следующим образом.

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");
        }));
     })
    )

Итак, мой вопрос, что будет дальше? Какой синтаксис?

Я не могу не думать, что это будет выглядеть примерно так.

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()
        }));
     })
    )

Вот соответствующий ActionResult для моего контроллера

  public ActionResult TreeView()
  {
    var ctx = new SMTXContext();
    var Contracts = ctx.Contracts.ToList();
    return View(Contracts);
  }

, который я использую в своем представлении в качестве IEnumerable, чтобы строго печатать таблицы из модели. (Следующая строка - первая строка на мой взгляд.

@model IEnumerable<SMTXEFMVCModel.Contract>

Ответы [ 2 ]

1 голос
/ 09 августа 2011

Внимание, это «решение» не использует версию привязки данных в древовидном представлении telerik, но для любого, кто хочет вложить несколько таблиц в один уровень в древовидном представлении, кажется вероятным кандидатом.

@(

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");
                        }
                      }
                });
          }});
     }))
1 голос
/ 04 августа 2011

Если ваши классы имеют правильные отношения друг с другом, это должно быть так просто:

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;
                            ...
                        }));
            }) 

Я говорю, что это должно быть потому, что точная функциональность элементов управления Telerik имеет тенденцию становиться "туманной", как выраздвинуть нормальные границы, особенно новые, такие как элементы управления MVC.

Я уверен, что вы уже посмотрели примеры здесь , но в документации нет ничего, показывающего точный пример того, как делать то, что вы пытаетесь сделать.Я заставил это работать, используя приведенный выше код, но мои модель и классы могут быть настроены не так, как ваши.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...