在我的应用程序中,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;
}
...
}
这是有效的,经过Postman测试。获取数据并在DB中进行修改。 但我的网格:
@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源来存储它。
我做错了什么?
答案 0 :(得分:0)
应该从
更改数据源.Datasource("http://localhost:26168/odata/Drivers")
到
.Datasource(d => d.URL("http://localhost:26168/odata/Drivers"))
这很好用。