2012-02-12 2 views
1

ASP.Net MVC3 면도기 뷰가있는 Telerik MVC 일괄 편집 가능 표를 사용하고 있습니다. 그리드를 편집 할 수있을뿐만 아니라 편집 링크 (이상적으로 링크 가능한 이미지)가있는 열을 추가하려고합니다.이 링크를 클릭하면 개별 레코드의 편집 페이지로 연결됩니다. 예 :Telerik MVC3 클라이언트 템플릿이 포함 된 면도기 일괄 처리 편집

@(Html.Telerik().Grid(Model) 
        .Name("BillersGrid") 
        .DataKeys(keys => keys.Add(o => o.id)) 
        .ToolBar(commands => 
        { 
         commands.Insert(); 
         commands.SubmitChanges(); 
        }) 
        .DataBinding(databinding => 
        { 
         databinding.Ajax() 
          .Select("SelectBatchEditing", "BillerAdmin") 
          .Update("SaveBatchEditing", "BillerAdmin", new { id =    (string)ViewData["BillerSearchString"] }); 
        } 
        ) 
        .Columns(columns => 
        { 
         columns.Command(commands => commands.Delete().ButtonType(GridButtonType.BareImage)).Width(10).Title("");       
         columns.Bound(o => o.id).Title("Edit").ClientTemplate("<a href='/BillerAdmin/EditBiller?id=<#=id#>'>Edit</a>"); 
         columns.Bound(o => o.id).Hidden(true); 
         columns.Bound(o => o.CouponBillerName).Title("Coupon Biller Name").HtmlAttributes(new { style = "white-space:nowrap;" }); 
         columns.Bound(o => o.PayeeRecipient).Title("Recipient").HtmlAttributes(new { style = "white-space:nowrap;" }); 
         columns.Bound(o => o.PayeeAddress1).Title("Address 1").HtmlAttributes(new { style = "white-space:nowrap;" }); 
         columns.Bound(o => o.PayeeAddress2).Title("Address 2").Width(100); 
         columns.Bound(o => o.PayeeCity).Title("City").HtmlAttributes(new { style = "white-space:nowrap;" }); 
         columns.Bound(o => o.State).ClientTemplate("<#= State #>"); 
         columns.Bound(o => o.PayeeZip).Title("Zip").Width(50); 
         columns.Bound(o => o.PayeeZipPlusFour).Title("Zip+4").Width(50); 
         columns.Bound(o => o.Category).ClientTemplate("<#= Category #>").HtmlAttributes(new { style = "white-space:nowrap;" }); 
         columns.Bound(o => o.AccountNumberFormat).Title("Account Number Format").Width(50); 
         columns.Bound(o => o.CodeLineNumberFormat).Title("CodeLine Number Format").Width(50); 
        }) 
        .Pageable(paging => paging.Position(GridPagerPosition.Bottom).Style(GridPagerStyles.NextPreviousAndNumeric).Total((int)ViewData["BillersCount"]).PageSize(50)) 
        .EnableCustomBinding(true) 
        .Editable(editing => editing.Mode(GridEditMode.InCell)) 
        .Sortable() 
        .ClientEvents(evt => evt.OnDataBinding("BillersGrid_onDataBinding")) 
        .KeyboardNavigation(config => config.EditOnTab(true)) 
        .HtmlAttributes(new { style = "font-size:.9x cem;" }) 
        ) 

이것은 작동합니다. 하지만 문제는 그리드가 처음 렌더링 될 때 ID (guid)로 표시된다는 것입니다. 페이징시 "편집"하이퍼 링크가 올바르게 표시됩니다.

On going to the next page

first time grid is rendered

어떤 사람은 나에게 도움이 될 수 있습니다. 그리드가 매번 편집 링크를 보여주기를 바랍니다. 이 셀은 편집 할 수 없어야하고 다른보기로 이동하는 하이퍼 링크 여야합니다. 이 기능은 올바르게 작동합니다. 문제는 ID가 처음 렌더링 될 때 표시됩니다. 도와주세요.

덕분에, SDD

답변

0

클라이언트 템플릿은 아약스 바인딩시 적용됩니다. 그리드가 처음 바인딩 서버 측 :

columns.Bound(o => o.id).Title("Edit") 
     .Template(@<text> 
      <a href="/BillerAdmin/[email protected]">Edit</a> 
     </text>) 
     .ClientTemplate("<a href='/BillerAdmin/EditBiller?id=<#=id#>'>Edit</a>"); 

또는 처음 아약스 사용하여 바인딩 그리드합니다 :

Html.Telerik().Grid(Model) 

어느뿐만 아니라 서버 측 템플릿을 설정

Html.Telerik().Grid<YourModelType>() 
+0

감사의 Atanas을 . 해결 된 서버 템플릿 추가. – sdd

관련 문제