在我的应用程序中,ASP.NET MVC 4,EntityFramework和Syncfusion MVC控件中,我对MVC Grid有问题。我用 Web API 创建了 OData 源代码:
public class DriversController : ODataController
{
private ApplicationDbContext db = new ApplicationDbContext();
// GET: odata/Drivers
[EnableQuery]
public IQueryable<Driver> GetDrivers()
{
return db.Drivers;
}
...
}
这行得通,用邮递员测试过。获取数据并在数据库中对其进行修改。但是我的网格:
@model dynamic
@(Html.EJ().Grid<object>("DriversGrid")
.Datasource("http://localhost:26168/odata/Drivers")
.Columns(col =>
{
col.Field("Id").HeaderText("ID").IsIdentity(true).IsPrimaryKey(true).AllowFiltering(false).Add();
col.Field("Name").HeaderText("Nazwa").Add();
col.Field("DriverId").HeaderText("ID pastylki").Add();
})
.AllowFiltering()
.FilterSettings(d => d.FilterType(FilterType.Menu))
.AllowSorting()
.ClientSideEvents(events =>
{
events.EndAdd("onEndAdd");
// events.Load("onLoad");
})
.EditSettings(edit => { edit.AllowAdding().AllowDeleting().AllowEditing(); })
.ToolbarSettings(toolbar =>
{
toolbar.ShowToolbar().ToolbarItems(items =>
{
items.AddTool(ToolBarItems.Add);
items.AddTool(ToolBarItems.Edit);
items.AddTool(ToolBarItems.Delete);
items.AddTool(ToolBarItems.Update);
items.AddTool(ToolBarItems.Cancel);
});
})
)
<script>
function onEndAdd(sender, args) {
var gridObj = $("#DriversGrid").ejGrid("instance");
gridObj.refreshContent();
};
</script>
仅从控制器读取数据,网格上的操作仅调用public IQueryable<Driver> GetDrivers()
。不会调用控制器上的其他操作。网格经常编辑、删除和插入数据,但不调用 odata 源来存储这些数据。我做错了什么?
应将数据源从
.Datasource("http://localhost:26168/odata/Drivers")
自
.Datasource(d => d.URL("http://localhost:26168/odata/Drivers"))
这工作正常。