2011-10-21 20 views
0
でHiddenIndexerInputForModel

MVC3とTelerikグリッドを使用。Telerik MVCグリッド - ClientTemplate

私はPhil Haacks Hidden Indexer Input For Modelを使用してフォームの値を戻しています。唯一の問題は、のDataBinderとして必要性を使用していたすべてのテンプレートをアヤックスを使用した場合、対応するClientTemplateを持っているということです。これは私が問題を抱えているところです。どのようにこれを挿入し、イテレータをClientTemplateに挿入しますか?文字列が必要ですか?

これは私がページを実行するとき、私は「イーター」は定義されていないというエラーを取得...無駄にしようとしたものです。

<% int Iter = 0; %> 
<% Html.Telerik().Grid(Model.TransferStudents) 
     .Name("TransferStudents") 
     .Columns(columns => 
       { 
        columns.Bound(o => o.Name) 
         .Width(250); 
        columns.Template(o =>{%> 

         <%: Html.HiddenFor(model => Model.TransferStudents[Iter].StudentId)%> 
         <%: Html.CheckBoxFor(model => Model.TransferStudents[Iter].Transfer)%> 
         <%}) 
         .ClientTemplate("<input type='hidden' id='StudentId' value='<#= StudentId #>' /><input type='checkbox' name='Transfer' <#= Transfer? \"checked='checked'\" :\"\" #> />") 
         .HtmlAttributes(new { @style = "text-align: center;" }) 
         .HeaderHtmlAttributes(new { @style = "text-align: center;" }) 
         .HeaderTemplate("Check All <input type='checkbox' id='chkAll' />") 
         .Width(105); 
        columns.Template(o =>{ %><% Iter = Iter + 1; %><%}) 
         .ClientTemplate("<# Iter = Iter + 1; #>") 
         .Hidden(); 
        columns.Template(o =>{ %><%: Html.HiddenIndexerInputForModel()%><% }) 
         .ClientTemplate("<#= Html.HiddenIndexerInputForModel() #>") 
         .Hidden(); 
       }) 
     .DataBinding(dataBinding => dataBinding.Ajax().OperationMode(GridOperationMode.Server).Select("_Transfer", "Administration")) 
     .Pageable(paging => paging.Style(pagerStyles).PageSize(2, new[] { 5, 10, 15, 25, 50, 200 }).Position(GridPagerPosition.Top).Total((int)ViewData["total"])) 
     .Sortable() 
     .NoRecordsTemplate("<p class='instructions'>No Records Available</p>") 
     .Render(); 
     %> 

任意のポインタが評価されます。

答えて

1

ClientTemplateはJavaScriptに変換され、ブラウザ(クライアント側)で実行される文字列を期待しています。このようHtml.HiddenIndexerInputForModel()などの任意のサーバーのコードは動作しません - 何のJavaScript相当するものはありません。あなたは他の列で行ったように、プレーンhtmlを使用する必要があります。これは columns.Template働くことが見出さ

+0

(O => {%><%イーター=イーター+ 1;%><%}) .ClientTemplate( "<#" +イーター++ + ";#>" ) 。隠し(); columns.Template(0 => {%><%:Html.HiddenIndexerInputForModel()%><%}) .ClientTemplate( "<#>" + Html.HiddenIndexerInputForModel()+ "#>") .Hidden (); – Greg

関連する問題