把一個鏈接在你的網格行
@(Html.Telerik().Grid<myModel>()
.Name("myGrid")
.Columns(columns =>
{
@* You can put a link in your client template to trigger a refresh function *@
columns.Bound(o => o.Id).ClientTemplate("<a href='javascript:refreshGrid(<#= Id #>);'>Refresh</a>");
columns.Bound(e => e.col1);
columns.Bound(e => e.col2);
columns.Bound(e => e.col3);
})
.ClientEvents(events => events.OnDataBinding("myGrid_onRowDataBinding"))
.DataBinding(dataBinding => dataBinding.Ajax().Select("Action", "Controller", new { param1 = ..., param2 = ... })))
的clienttemplate編寫代碼來刷新電網
<script type="text/javascript">
//parameters needed for grid
var x = ...;
var y = ...;
//grid refresh function
function refreshGrid(id) {
//make a call to server
$.post("/controller/action/" + id, function() {
//after making a successfull call to server
//you may update parameters
x = ...;
y = ...;
//and rebind your grid
$('#myGrid').data('tGrid').rebind();
})
}
//grid on row data binding event
function myGrid_onRowDataBinding(e) {
e.data = $.extend(e.data, { param1: x, param2: y });
}
</script>
就是這樣
編輯:
ClientRowT emplate例如
你只需要改變電網碼。其餘的都是一樣的。
@(Html.Telerik().Grid<myModel>()
.Name("myGrid")
.ClientRowTemplate(grid => "<div class='firstcolumn'><a href='javascript:refreshGrid(<#= Id #>);'>Refresh</a></div><div class='secondcolumn'>Content....</div>")
.ClientEvents(events => events.OnDataBinding("myGrid_onRowDataBinding"))
.DataBinding(dataBinding => dataBinding.Ajax().Select("Action", "Controller", new { param1 = ..., param2 = ... })))
我沒有使用ClientTemplate,而是使用ClientRowTemplate。答案可能是一樣的,但我想澄清。 – 2012-03-12 16:48:46
他們兩個都差不多。 ClientTemplate用於單元格,ClientRowTemplate用於整行。但用法是一樣的。我將編輯我的答案爲ClientRowTemplate版本。 – adyusuf 2012-03-13 05:41:33