2012-10-21 87 views
0

我是一種新的使用Telerik網格,基本上我想在這裏完成的是以下情形,我有一個窗體有一些字段,並通過ajax調用我的控制器上的另一個動作將模型生成爲具有以下網格的局部視圖,我的問題是我需要根據某些業務邏輯創建一些動作,我知道我可以使用列模板來做到這一點,因爲即時通訊使用ajax綁定它「鬆動」我的模板,在互聯網上環顧四周,我發現你可以使用js函數做到這一點去生成鏈接,我的問題是不是那種凌亂?即時通訊複製服務器和客戶端上的相同的業務邏輯,必須有更好的方法來實現這一點?自定義客戶端模板Telerik網格

Html.Telerik().Grid(Model) 
     .Name("Grid") 
     .DataBinding(binding => binding.Ajax().OperationMode(GridOperationMode.Client)) 
     .Columns(column => 
     { 
      column.Bound(c => c.Id).Title("Id").Width(30); 
      column.Bound(c => c.Status); 
      column.Bound(c => c.DateReg); 
      column.Template(
       @<text> 
        <div class="ActionsProvGrid"> 
         <a href="@Url.Action("SomeAction", "Controller", new {id = item.id})"> 
          <img src="../../Content/icons/ViewMore.png" alt="ViewMore" /> 
         </a> 
         @if (@item.Status.Equals("ACT")) 
         { 
          <a href="@Url.Action("SomeOtherAction", "Controller", new {idOportunidad = item.id})"> 
           <img src="../../Content/icons/invoice.png" alt="invoice"/> 
          </a> 
         } 

        </div>              
       </text> 
      ).ClientTemplate("<#= GenearteIcons(data) #>"); 
     }) 
    .Sortable() 

回答

0

正如你可以定義你的模型屬性的解決方案,封裝業務邏輯的結果是:產生一個鏈接的HTML你可以訪問此屬性中的JavaScript功能

public bool DoesStatusEqualToAct { 
    get 
    { 
    return (code that determines if it's true); 
    } 
} 

和:

function GenerateIcons(data){ 
    var html = ''; 
    if(data.DoesStatusEqualToAct){ 
     html = 'version 1'; 
    } 
    else{ 
     html = 'version 2'; 
    } 
    return html; 
} 
+0

Thx @Rustam可能是一種解決方法,但我需要在服務器端和一個客戶端兩次聲明模板,theres另一種方式? –