Asp.net mvc 4 始终显示剑道网格中选定的第一行

Asp.net mvc 4 始终显示剑道网格中选定的第一行,asp.net-mvc-4,kendo-ui,Asp.net Mvc 4,Kendo Ui,我在一个mvc4项目中使用剑道网格。我希望用户看到默认选中的网格的第一行。我有很多行,所以我使用分页。当用户转到第2、3、…40页等时,我还希望看到选中的每个页面的第一行。下面是我创建网格的代码 <%: Html.Kendo().Grid(Model) .Name("AuthorisationsGrid") .Columns(columns => { columns.Bound

我在一个mvc4项目中使用剑道网格。我希望用户看到默认选中的网格的第一行。我有很多行,所以我使用分页。当用户转到第2、3、…40页等时,我还希望看到选中的每个页面的第一行。下面是我创建网格的代码

<%: Html.Kendo().Grid(Model)
            .Name("AuthorisationsGrid")
            .Columns(columns =>
             {
                 columns.Bound(p => p.Mis).Title("MIS").Width(80);
                 columns.Bound(p => p.AuthorisationSerialNumber).Title("ΑΑ Προέγκρισης");
             })
             .Pageable()
             .Sortable()
             .Filterable()
             .Selectable(s => s.Mode(GridSelectionMode.Single))
             .Resizable(resize => resize.Columns(true))
             .DataSource(dataSource => dataSource
                .Ajax()
                .ServerOperation(false)
                .Model(model => model.Id(p => p.AuthorisationSerialNumber))
                .Model(model => model.Field(p => p.Mis))
                .Batch(true)
                .Read(read => read.Action("AuthorisationsPartial", "UserFilesDashboard")))%>

{
列绑定(p=>p.Mis).Title(“Mis”).Width(80);
列绑定(p=>p.AuthorizationSerialNumber)。标题(“ΑΑ∏ροέγκρισης”);
})
.Pageable()
.Sortable()
.可过滤()
.可选(s=>s.Mode(GridSelectionMode.Single))
.resize可调整大小(resize=>resize.Columns(true))
.DataSource(DataSource=>DataSource
.Ajax()
.ServerOperation(错误)
.Model(Model=>Model.Id(p=>p.authorizationSerialNumber))
.Model(Model=>Model.Field(p=>p.Mis))
.Batch(真)
.Read(Read=>Read.Action(“authorizationsparial”、“UserFilesDashboard”))%%>
我如何实现上述行为?也许jQuery可能有用(但我对jQuery知之甚少)。谢谢你的帮助。提前感谢。

实际上,您可以使用网格事件和jQuery将k-state-selected类添加到网格体中的第一个tr元素中

以下是一个例子:

$('#GridName').data().kendoGrid.bind('dataBound',function(e){
    this.element.find('tbody tr:first').addClass('k-state-selected')
})

这也可以用另一种方法来实现

方法1 通过将网格绑定到
onDataBound
事件

<div data-bind="source: mydataSource, events: {
  dataBound: onDataBound
}" > 
方法2 内部

databound: function() {
  var uid = data[0].uid;
  var row = roomGrid.table.find('tr[data-uid="' + uid + '"]');
  roomGrid.select(row);
}
这在我的情况下有效。希望能有帮助

$('#gridName').data().kendoGrid.bind('dataBound', function (e) {
            this.select("tr:eq(1)");
            //this.element.find('tbody tr:first').addClass('k-state-selected');
        })
有关更多详细信息,请参阅下面的链接

从以下位置更新代码后:

$('#GridName').data().kendoGrid.bind('dataBound',function(e){...
致:

$('#GridName').data("kendoGrid").bind('dataBound', function (e) {...
现在它已修复,下面的最终代码正在运行:

$(function () {
    $('#GridMaster').data("kendoGrid").bind('dataBound', function (e) {
        this.element.find('tbody tr:first').addClass('k-state-selected')
    });
});


注意:如果在网格上获取记录时出现问题,请在网格定义之后而不是网格定义之前使用此脚本。

能否解释此代码的工作原理?只有代码的答案(虽然有时被接受)可以通过添加一些东西来解释它的功能或工作方式来改进。谢谢但这并不是真正的选择
$(function () {
    $('#GridMaster').data("kendoGrid").bind('dataBound', function (e) {
        this.element.find('tbody tr:first').addClass('k-state-selected')
    });
});