如何使用绑定到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绑定。