2016-12-05 12 views
0

剣道UIのMVCグリッドのClientTemplate内で使用されるカミソリ関数の中でバインドされた列の値を使用する必要があります。 LIKE「AnyColumnValue」パラメータの下:MVCの剃刀関数にバインドされた列の値を渡す剣道UIグリッド

.ClientTemplate(@KendoHtmlFuncs.RequestingDeleteWithConfirmationLink(itemNameL, AnyColumnValue)); 

全例は以下の通りです:@TheDreadPirateStephenのコメントの後にいくつかの掘削の終わりに

@(Html.Kendo().Grid<DisplayOfGroupCompanyVm>() 
     .Name(itemNameL + "-definitions-grid") 
     .Columns(columns => 
     { 
     columns.Bound(c => c.Name); 
     columns.Bound(c => c.DateCreated).ClientTemplate("#= kendo.toString(DateCreated,'yyyy-MM-dd')#"); //.Width(150); 
     columns.Bound(c => c.IsActive); 
     columns.Bound(c => c.CreateStatus); 

     columns.Template(@<text></text>) 
        .Width(100) 
        .ClientTemplate(@KendoHtmlFuncs.GetModalForRequestingEditLink(itemNameL)); 
     columns.Template(@<text></text>) 
       .Width(100) 
       .ClientTemplate(@KendoHtmlFuncs.RequestingDeleteWithConfirmationLink(itemNameL, AnyColumnValue)); 
     }) 
+1

AnyColumnValueとは何ですか?グリッドにバインドされたdataSourceの列の実際の値は?そうであれば、KendoHtmlFuncs.RequestingDeleteWithConfirmationLink()はサーバーサイドの関数(cshtmlレンダリング中にサーバー上で実行される)としてグリッドがdataSourceにバインドされるまで、AnyColumnValueに値がありませんクライアント。 RequestingDeleteWithConfirmationLink()をクライアント側の関数にしなければならないようです... ClientTemplate内の*サーバーコードを*実行することはできません。 –

+0

@TheDreadPirateStephenありがとう、それは正しいです。これに加えて、カミソリ関数のパラメータとして列の値を使用する回避策がありますか? – serefbilge

+0

私は、カラムの値がサーバ上に存在しない(カミソリ関数が実行される)ので、そうは思わない。行がレンダリングされたときにClientTemplateがクライアント上で実行されるときにClientTemplateの実際の列値を使用することができます.Razor関数を呼び出すことはできません。そのビューはクライアントに返されます。 http://docs.telerik.com/aspnet-mvc/helpers/grid/configuration#clienttemplateを参照するか、関数の実装と渡している列を提供してください。私は答えを書くことを試みます。 –

答えて

0

、(彼のおかげで)私はこの問題を回避するために私の方法を変更しました。彼のコメントの主なポイントは 'あなたはClientTemplateでサーバーコードを実行できません'です。それから、以下のような回避策が可能です。

.ClientTemplate(@KendoHtmlFuncs.RequestingDeleteWithConfirmationLink(itemNameL)); 

Iは、HTMLかみそり関数内AnyColumnValue(グリッドに結合したソースからの列の実際の値)を使用することをあきらめました。この代わりに、私は剃刀の機能によって返されたスクリプトの中でそれを使用しました。下に見られるカミソリ関数では、HasPermissionForRequestingDeleteの変数はAnyColumnValueに対応し、グリッドにバインドされたモデルに属します。

public static string RequestingDeleteWithConfirmationLink(string itemNameL) 
    { 
     string linkFormat = @"<a {0} class='k-button'> 
             <i class='fa fa-trash-o'></i> Request For Delete 
           </a>"; 

     string conditionalPart = @"#if(HasPermissionForRequestingDelete){# 
             onclick='" + itemNameL + @"_DefinitionsFunc.requestingDelete(this, #= Id #)' 
            #}else{# 
             disabled='disabled' 
            #}#"; 

     return string.Format(linkFormat, conditionalPart); 
    } 
関連する問題