Проблема с расширением treeView MVC - PullRequest
0 голосов
/ 20 апреля 2011

Я работаю с привязкой данных treeView в MVC и получаю следующую ошибку:

Ошибка 1 Невозможно использовать лямбда-выражение в качестве аргумента для динамически отправляемой операции без предварительного приведения его к типу дерева делегата или выражения

Когда я пытаюсь запустить демонстрационный код:

 <% Html.Telerik().TreeView()


 .Name("TeleTreeView")
    .BindTo(Model, mappings => 
    {
         mappings.For<Category>(binding => binding
        .ItemDataBound((item, category) =>
        {
            item.Text = category.CategoryName;
        })
        .Children(category => category.Products));
         mappings.For<Product>(binding => binding
        .ItemDataBound((item, product) =>
        {
            item.Text = product.ProductName;
       }));
})
   .Render(); %>

Я читал, что, возможно, мне не хватает сборки, поэтому я добавил Linq:

<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

По-прежнему есть та же проблема, какие-либо предложения?

Ответы [ 2 ]

1 голос
/ 21 апреля 2011
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<IEnumerable<Category>>" 

Это ответ, Что проходит через System.Web.Mvc.ViewPage. Должен быть класс, который мы отображаем.

0 голосов
/ 24 июля 2011
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<GridWithWindow.Jar>>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    AddEditUser
</asp:Content>

    <% using (Html.BeginForm("AddEditUser", "JarUser", FormMethod.Post ))
       {%>

        <% List<TreeViewItem> checkedNodes = ViewData["TreeView1_checkedNodes"] as
            List<TreeViewItem>; %>


    <%= Html.Telerik().TreeView()
    .Name("Tree")
    .ShowCheckBox(true)
    )
    .BindTo(Model, mappings =>
    {
        mappings.For<GridWithWindow.Jar>(binding => binding
            .ItemDataBound((item, jag) =>
                {
                    item.Text = jag.TreeName;
                    item.Value = jag.TreeName;

                    if (checkedNodes != null)
                    {
                        var checkedNode = checkedNodes
                                            .Where(e => e.Value.Equals("ddd"))
                                            .FirstOrDefault();
                        item.Checked = checkedNode != null ? checkedNode.Checked : false;
                    }
                    item.Expanded = true;

                })
                .Children(jag => jag.FirstLevelIList));
        mappings.For<GridWithWindow.Jar.FirstLevel>(binding => binding
            .ItemDataBound((item, frst) =>
                {
                    item.Text = frst.FirstLevelName;
                    item.Value = frst.FirstLevelName;
                })
                .Children(frst => frst.SecondLevelList));
        mappings.For<GridWithWindow.Jar.FirstLevel.SecondLevel>(binding => binding
            .ItemDataBound((item, scnd) =>
            {
                item.Text = scnd.SecondLevelName;
                item.Value = scnd.SecondLevelName;
            })
             .Children(scnd => scnd.ThirdlevelList));
        mappings.For<GridWithWindow.Jar.FirstLevel.SecondLevel.Thirdlevel>(binding => binding
            .ItemDataBound((item, thrd) =>
            {
                item.Text = thrd.ThirdlevelName;
                item.Value = thrd.ThirdlevelName;
            })
             .Children(thrd => thrd.AEDV_List));
        mappings.For<GridWithWindow.UserAcces>(binding => binding
            .ItemDataBound((item, acs) =>
            {
                item.Text = acs.UserAccesName;
                item.Value = acs.UserAccesName;
            })
           );
    })%>
    <input type="submit" value="GO" id="btn" />
    <input type="button" id="pst" value="do post back" onclick="javascript:__doPostBack()" />
    <%} %>

    <style type="text/css">
        .event-log-wrap
        {
            float: left;
            display: inline;
            width: 468px;
            margin-left: 10em;
        }
    </style>

</asp:Content>

Вам необходимо правильно создать структуры классов, иначе представление дерева не будет отображаться (структуры классов для дочерних элементов)

Страница должна наследовать:

Inherits="System.Web.Mvc.ViewPage<IEnumerable<GridWithWindow.Jaguar> anIEnumerable список / объект вашего класса

...