Telerik MVC3 Razor Batch edit Grid с проблемой шаблона клиента - PullRequest
1 голос
/ 12 февраля 2012

Я использую редактируемую сетку Telerik MVC Batch с видами бритвы ASP.Net 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;" })
                    )

Это работает. Но проблема в том, что сетка отображается с идентификатором (который является guid) при первом отображении. На странице «Правка» гиперссылка отображается правильно.

first time grid is rendered

On going to the next page

Может кто-нибудь мне помочь. Я хотел бы, чтобы сетка показывала ссылку «Редактировать» каждый раз. Эта ячейка должна быть недоступна для редактирования и должна быть гиперссылкой, переходящей в другое представление. Функциональность работает правильно. Проблема заключается в том, что идентификатор отображается при первом отображении. Пожалуйста, помогите.

Спасибо, SDD

1 Ответ

0 голосов
/ 14 февраля 2012

Клиентские шаблоны применяются во время привязки ajax.Ваша сетка изначально привязана к серверной стороне:

Html.Telerik().Grid(Model)

Либо установите также серверный шаблон:

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

, либо сделайте сетку, изначально привязанную с использованием ajax:

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