6

我已经成功创建了一个 Telerik 网格来显示产品列表,但是我在添加列以允许用户编辑时遇到了一些困难(我什至没有尝试在网格内进行编辑 - 我只是想要一个链接到编辑视图)

添加自定义列时,我在调试时在错误屏幕中看到以下行(第 24 行为红色):

Line 22:                          columns.Add(o => o.ProductIsActive);
Line 23:                          columns.Template(o =>
Line 24:                          {
Line 25:                              
Line 26:                              %><%=Html.ActionLink("Edit", "Edit", new { id = o.ProductID })%><% }).Title("Edit");

我的编译器错误消息是 Compiler Error Message: CS1525: Invalid expression term ')'

这是我的查看代码:

<%= Html.Telerik().Grid<NationalPetVax.Models.Product>()
          .Ajax(ajax => ajax.Action("_Index", "Products"))
          .DataKeys(dataKeys => dataKeys.Add(c => c.ProductID))
          .DataBinding(dataBinding => dataBinding.Ajax().Update("Update", "Home"))

          .Name("Grid")
                 .Columns(columns =>
                 {
                     columns.Add(o => o.ProductName).Width(81);
                     columns.Add(o => o.ProductPrice).Width(200);
                     columns.Add(o => o.ProductType.ProductTypeName);
                     columns.Add(o => o.Specy.SpeciesName);
                     columns.Add(o => o.ProductIsActive);
                     columns.Template(o =>
                     {

                         %><%=Html.ActionLink("Edit", "Edit", new { id = o.ProductID })%><% }).Title("Edit");

                     })
          .Sortable()
          .Scrollable()
          .Pageable();
    %>

有没有人见过这个问题?我一遍又一遍地遵循这些教程,并且即将完全放弃 Telerik 网格,尽管我真的很喜欢它们并且想将它们包含在我的项目中。

4

5 回答 5

6

我不知道 Telerik。但看起来问题出在表达式内的结束/开始标签上。试试这个 :

columns.Template(o =>
              { 
                  Response.Write(Html.ActionLink("Edit", "Edit", 
                  new { id = o.ProductID })); 
              }).Title("Edit");
于 2010-02-21T17:15:51.957 回答
5

以下代码将解决您的问题,并使代码有点整洁。

columns.Bound(o => o.ProductId).Format(
             Html.ActionLink("Edit", "Edit", new {Id = "{0}"}).ToString());

Also Bound是新的Add in 2010 Q1 版本

于 2010-02-22T05:59:05.720 回答
5

如果您想在代码中保留“鳄鱼标签”,例如

columns.Template(o =>
                     {

                         %><%=Html.ActionLink("Edit", "Edit", new { id = o.ProductID })%><% }).Title("Edit");

                     })

你只需要改变你如何称呼它。在顶部你正在做一个

<%=

将其更改为

<%

然后打电话

.Render()

在您的网格声明的末尾。这将防止“无效的表达式术语”错误。你的整个新代码应该看起来像

<% Html.Telerik().Grid<NationalPetVax.Models.Product>()
          .Ajax(ajax => ajax.Action("_Index", "Products"))
          .DataKeys(dataKeys => dataKeys.Add(c => c.ProductID))
          .DataBinding(dataBinding => dataBinding.Ajax().Update("Update", "Home"))

          .Name("Grid")
                 .Columns(columns =>
                 {
                     columns.Add(o => o.ProductName).Width(81);
                     columns.Add(o => o.ProductPrice).Width(200);
                     columns.Add(o => o.ProductType.ProductTypeName);
                     columns.Add(o => o.Specy.SpeciesName);
                     columns.Add(o => o.ProductIsActive);
                     columns.Template(o =>
                     {

                         %><%=Html.ActionLink("Edit", "Edit", new { id = o.ProductID })%><% }).Title("Edit");

                     })
          .Sortable()
          .Scrollable()
          .Pageable()
          .Render();
    %>
于 2010-03-04T01:16:58.263 回答
4

我想为代码添加一些评论。试试这个,它的工作

columns.Add(c => c.CustomerID).Format(Html.ActionLink("Edit", "Home", new { id = "{0}"}}) ).Encoded(false).Title("Edit" );

于 2010-06-22T07:15:55.817 回答
1

这是一个很晚的回复,但可能对其他人有帮助。Telerik 网格不能仅在 Ajax 模式下使用服务器模板列。如果您只想在网格中添加一个额外的列,该列未绑定任何内容(同时仍保持 Ajax 模式),请尝试这样的操作

columns.Template(o=>{}).ClientTemplate(
    Html.ActionLink("<Link text here>", "<action name>", "<controller name>", 
        new { id = "<#= ID #>" }, new { @class = "Edit" }).ToString()
).Title("Edit Column")

这将正确呈现,并且您想要使用链接的任何数据也将得到处理。

于 2011-06-26T10:18:04.560 回答