我正在使用MVC中的treeView数据绑定,我收到以下错误:
错误1无法将lambda表达式作为动态调度操作的参数,而不先将其转换为委托或表达式树类型
当我尝试运行演示代码时:
<% 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"/>
还有同样的问题,有什么建议吗?
答案 0 :(得分:1)
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<IEnumerable<Category>>"
这是答案,通过System.Web.Mvc.ViewPage传递什么。应该是我们要映射的类。
答案 1 :(得分:0)
<%@ 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>
您需要正确使用类结构,否则将无法呈现treeview(子项的类结构)
Page应该继承:
Inherits="System.Web.Mvc.ViewPage<IEnumerable<GridWithWindow.Jaguar>
您班级的IEnumerable
列表/ obj