2012-02-06 69 views
0

我需要在ASP.NET MVC應用程序中使用jQuery通過Ajax調用獲取的JSON數據綁定網格。但對於每一列,我希望能夠定義一個模板(類似於WebForm中的GridView控件中的TemplateField)。該模板就像列定義一樣,並完全控制在該列中顯示的內容。哪個網格控件支持這個?我認爲jQGrid,DataTable和SlickGrid是用於客戶端數據綁定的流行的基於jQuery的網格控件。對網格中的一個或多個列執行具有自定義模板的任何支持?我找到了一個link,它顯示瞭如何將JSON數據綁定到客戶端的網格,但沒有關於如何爲每列定義模板的信息。ASP.NET MVC 3中的jQuery網格控件的客戶端模板列3

回答

1

在jqgrid中,你可以有一個自定義的格式化函數,在那裏你將返回給定的列上使用的html字符串模板(http://www.trirand.com/jqgridwiki/doku.php?id=wiki :custom_formatter)。 在Datatable(也包含jqGrid)中,可以從現有元素創建網格。在這種情況下,您可以在剃鬚刀中使用@foreach語句創建表格,並在單元格內應用模板。

實施例使用的jqGrid自定義格式和jQuery模板:

// Your cell template 
<script id="MyColumnTemplate" type="text/x-jquery-tmpl"> 
    <h1>${Name}</h1> 
</script> 


<script> 

// creating the grid passing the formating function 
$('#GridView').jqGrid({ 
    (...) 
    colModel: [   
    { name: 'Custom', formatter: myFormatter}, ...], 
    }); 
}); 

function myFormatter(cellvalue, options, rowObject) { 
    var data = { Name: 'Test' }; 
    // applying the jquery template and returning html output 
    return $('#MyColumnTemplate').tmpl(data).html(); 
} 

</script> 
+0

感謝。我更喜歡第二種選擇,即在剃刀中定義模板比在Javascript中定義模板。但我可以這樣做客戶端綁定?我的意思是我可以將一個JSON對象集合綁定到Javascript中的網格,並且仍然能夠在剃刀中定義網格模板?你能分享一些關於如何做到這一點的例子嗎?我花了很長時間尋找這個,但找不到那樣的東西。 – RKP 2012-02-06 18:07:29

+0

我不想在Javascript中定義我的模板的主要原因是因爲它使用HTML的字符串連接,並且很容易出錯,而不是一種乾淨的方式來定義模板。 – RKP 2012-02-06 18:09:21

+0

您可以創建一個僅定義模板的局部視圖,在那裏使用razor並使用ajax get調用來檢索它。但我認爲這會更復雜,所以我建議使用自定義格式化方法。 – 2012-02-06 18:16:26