如何在Kendo UI Grid中显示行号?我的代码不起作用。页面显示列但它是空的。
@{int counter = 1;}
@(Html.Kendo().Grid<QueueViewModel>()
.Name("Queue")
.Columns(columns =>
{
columns.Template(@<text><span>@counter @{ counter++; }</span></text>).Title("#");
})
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(10)
.Read(read => read.Action("GetOpenQueue", "DataSource", new { GeneralQueue = true })
))
答案 0 :(得分:7)
这样做:
@{
int counter = 1;
}
@(Html.Kendo().Grid<QueueViewModel>()
.Name("Queue")
.Columns(columns =>
{
columns.Template(@<text><span>@(counter++)</span></text>).Title("#");
})
或者,如果您的DataSource设置为Ajax(客户端),请执行以下操作:
<script>
var counter = 1;
function onDataBound(e) {
counter = 1;
}
function renderNumber(data) {
return counter++;
}
</script>
@(Html.Kendo().Grid()
.Name("Queue")
.Columns(columns => {
columns.Template(t => { }).ClientTemplate("#= renderNumber(data) #").Title("#");
})
.Events(ev => ev.DataBound("onDataBound"))
)
答案 1 :(得分:1)
列ClientTemplate是客户端功能。您不能在其中使用服务器端变量。您应该定义Javascript变量:
<script>
var i = 1;
</script>
然后,在网格内部使用:
columns.Template(t => { }).ClientTemplate(#=i++#).Title("#");
更新:它应该是ClientTemplate而不是Template
答案 2 :(得分:1)
尝试这种方式在javascript中,代码也将支持分页
<script type="text/javascript">
var CountIt = 0
function GetCountIt() {
var page = $("#YourGrid").data("kendoGrid").dataSource.page();
var pageSize = $("#YourGrid").data("kendoGrid").dataSource.pageSize();
CountIt++;
return (page * pageSize) - pageSize + CountIt
}
function YourGrid_DataBound() {
CountIt = 0; $('#YourGrid').data('kendoGrid').pager.unbind("change").bind('change', function (e) {
CountIt = 0
})
}
</script>
然后添加到您的kindo网格
.Events(events =>
{
events.DataBound("YourGrid_DataBound");
})
.Columns(columns =>
{
columns.Bound("").ClientTemplate("#=GetCountIt()#").Title("Sr.").Width(50);
...