2010-02-21 25 views
6

Tôi đã thành công với việc tạo lưới Telerik để hiển thị danh sách sản phẩm, tuy nhiên tôi đã trải qua một số khó khăn khi thêm để cho phép người dùng chỉnh sửa (tôi thậm chí không cố chỉnh sửa trong lưới - tôi chỉ muốn liên kết đến chế độ xem chỉnh sửa)Thêm cột Chỉnh sửa vào lưới telerik bằng ASP.Net MVC 2 và Telerik MVC (2010 Q1)

Khi tôi thêm cột tùy chỉnh, tôi nhận các dòng sau trong màn hình lỗi của mình khi tôi gỡ lỗi (Dòng 24 màu đỏ):

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

My biên dịch báo lỗi là trình biên dịch báo lỗi: CS1525: Invalid hạn biểu hiện ')'

Đây là của tôi Xem Code:

<%= 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(); 
    %> 

Có ai từng gặp vấn đề này? Tôi đã theo các hướng dẫn hơn và hơn và về để cho lên trên lưới telerik tất cả cùng nhau, mặc dù tôi thực sự thích họ và muốn bao gồm trong projet của tôi.

Trả lời

6

Tôi không biết về Telerik. Nhưng có vẻ như vấn đề là về các thẻ đóng/mở bên trong biểu thức. Hãy thử điều này:

columns.Template(o => 
       { 
        Response.Write(Html.ActionLink("Edit", "Edit", 
        new { id = o.ProductID })); 
       }).Title("Edit"); 
+0

Nguyên nhân câu trả lời hay nhất có vấn đề với giải pháp đúng: cột.Bound (o => o.Id) .Format (Html.ActionLink ("Chỉnh sửa", "Chỉnh sửa", mới {id = " {0} "}). ToHtmlString()); - nó hiển thị html dưới dạng chuỗi. – Merritt

+0

@Merritt - Để sử dụng giải pháp đó, bạn cần tắt mã hóa html, Định dạng (Html.ActionLink ("Chỉnh sửa", "Chỉnh sửa", mới {id = "{0}"}). ToHtmlString()).); – Daniel

5

Mã sau sẽ giải quyết vấn đề của bạn và sẽ làm cho mã ít gọn gàng.

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

Cũng ràng buộc là mới Thêm năm 2010 Q1 phát hành

5

Nếu bạn muốn giữ lại "thẻ cá sấu" của bạn trong mã của bạn như

columns.Template(o => 
        { 

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

        }) 

Bạn chỉ cần thay đổi cách bạn đang gọi điều này. Ở phía trên bạn đang làm một thay đổi

<%= 

đó để

<% 

Và chỉ cần gọi

.Render() 

vào cuối tờ khai mạng lưới của bạn. Điều đó sẽ ngăn chặn lỗi "cụm từ biểu thức không hợp lệ". Toàn bộ mã mới của bạn phải trông giống như

<% 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(); 
    %> 
4

tôi muốn thêm một số đánh giá cho mã. hãy thử điều này, nó hoạt động

cộtThêm (c => c.CustomerID) .Format ( Html.ActionLink ("Chỉnh sửa", "Trang chủ", mới {id = "{0}"}}) ) .Encoded (false) .Tiêu đề ("Chỉnh sửa");

1

Trả lời rất muộn nhưng có thể hữu ích cho người khác. Bạn không thể chỉ sử dụng các cột mẫu máy chủ trong chế độ Ajax cho lưới Telerik. Nếu bạn chỉ muốn thêm một cột phụ để lưới của bạn mà không bị ràng buộc bất cứ điều gì (trong khi vẫn duy trì chế độ Ajax) thử một cái gì đó như thế này

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

Điều này sẽ làm cho đúng và bất kỳ dữ liệu mà bạn muốn với các liên kết sẽ được chăm sóc quá.

+0

câu trả lời muộn của bạn đã cứu tôi hôm nay, cảm ơn – Rafay

Các vấn đề liên quan