如何使用绑定到DataTable的Kendo Grid启用排序

本文关键字:Kendo Grid 启用 排序 DataTable 何使用 绑定 | 更新日期: 2023-09-27 18:00:03

我目前在尝试实现Kendo Grid控件的排序功能时遇到了问题。当我单击一列对值进行排序时,它会将我带到404页。我看过的任何文档都没有将网格绑定到DataTable,我还想知道是否需要对排序进行特定的操作。有人能帮忙吗?

查看代码:

    @{
        if (IsPost && Request.Url.AbsolutePath.Contains("Carriers"))
        {
                @(Html.Kendo().Grid((DataTable)(ViewData["CarrierResults"]))
                    .Name("carrierSearchResults")
                    .Sortable()
                )
        }
    }

控制器代码:

    [HttpPost]
    public ActionResult Carriers()
    {
        DealerPortalRepository dpr = new DealerPortalRepository();
        // The SearchForCarriers method below returns a DataTable
        ViewData["CarrierResults"] = dpr.SearchForCarriers();  
        return View("~/Views/Search/Index.cshtml");
    }

编辑:查询代码:

    public DataTable SearchForCarriers()
    {
        var query = from a in db.Affiliates
                    where a.AffiliateLevel == 1
                    select new { a.AffiliateName };
        return createCarrierTable(query);
    }
    public DataTable createCarrierTable(IEnumerable<dynamic> query)
    {
        // Create new DataTable since the query above does not produce a DataRow that follows a schema already defined in the database.
        DataTable dt = new DataTable();
        dt.Columns.Add(
            new DataColumn()
            {
                DataType = System.Type.GetType("System.String"),
                ColumnName = "Affiliate Name"
            }
        );
        // Add the row(s) to the DataTable.
        foreach (dynamic item in query)
        {
            var row = dt.NewRow();
            row["Affiliate Name"] = item.AffiliateName;
            dt.Rows.Add(row);
        }
        return dt;
    }

附言:我知道我可能应该使用一个模型而不是ViewData,但我最初并没有这样实现它,因为我的DataTable中的匿名类型让我很反感

由于我看不到您代码的其余部分,我的猜测如下。

你能移除[HttpPost]并再次测试它吗?

如果仍然不起作用,则需要另一个接受DataSourceRequest作为参数的操作方法。

public ActionResult Carriers_Read([DataSourceRequest]DataSourceRequest request)
{
  ...
}

看看网格Ajax绑定。

如何使用绑定到DataTable的Kendo Grid启用排序