Kendo ui 刷新浏览器使剑道UI网格(MVC ASP.NET)中的数据消失

Kendo ui 刷新浏览器使剑道UI网格(MVC ASP.NET)中的数据消失,kendo-ui,kendo-grid,kendo-asp.net-mvc,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,我的剑道UI网格工作得很好,只是我的页面刷新有问题。我注意到如果我刷新浏览器,我刚才插入的数据就会消失。单元格仍然存在,因为网格识别出应该有数据,并且读取操作方法正在触发并返回适当的数据,但是数据没有显示出来。有什么想法吗 控制器: public ActionResult EditingPopup_Read([DataSourceRequest] DataSourceRequest request, ExpenseReportModel erLineItem, int expenseReport

我的剑道UI网格工作得很好,只是我的页面刷新有问题。我注意到如果我刷新浏览器,我刚才插入的数据就会消失。单元格仍然存在,因为网格识别出应该有数据,并且读取操作方法正在触发并返回适当的数据,但是数据没有显示出来。有什么想法吗

控制器:

public ActionResult EditingPopup_Read([DataSourceRequest] DataSourceRequest request, ExpenseReportModel erLineItem, int expenseReportId)
    {
        if (Request.IsAjaxRequest())
        {
            return Json(globalKip.DisplayExpenseReportLineItems_Employee(expenseReportId).ToList().ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
        }
        else
        {
            return View("Index", erLineItem);
        }
    }
网格标记:

@(Html.Kendo().Grid<ExpenseReport.MVC.Models.ExpenseReportModel>()
        .Name("Grid")
            .Columns(columns =>
            {
                columns.Bound(p => p.ExpenseReportId).Visible(true);
                columns.Bound(p => p.ExpenseLineItemId).Visible(true);
                columns.Bound(p => p.ExpenseTypeDesc).Title("Expense Type");
                columns.Bound(p => p.City).Title("City");
                columns.Bound(p => p.StateName).Title("State");
                columns.Bound(p => p.Date).Format("{0:d}").Title("Date");
                columns.Bound(p => p.Amount).Title("Amount");
                columns.Bound(p => p.EndingMileage).Title("Ending Mileage");
                columns.Bound(p => p.BeginningMileage).Title("Beginning Mileage");
                columns.Command(command => { command.Edit(); command.Destroy(); });
            })
            .ToolBar(toolbar => toolbar.Create().HtmlAttributes(new { id = "btnAdd" }))
            .Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("NewExpense").Window(w => w.Width(500)))
            .Pageable()            
            .Scrollable()            
            .HtmlAttributes(new { style = "height:430px; width=100%" })            
            .DataSource(dataSource => dataSource
                .Ajax()
                .PageSize(20)
                //.Events(events => events.Sync("onRequestStart"))
                .Model(model => model.Id("ExpenseLineItemId"))
                .Create(create => create
                    .Action("EditingPopup_Create", "ExpenseReport")
                    .Data("erLineItemsCreateData"))
                .Read(read => read
                    .Action("EditingPopup_Read", "ExpenseReport")
                    .Data("erLineItemsReadData"))
                .Update(update => update
                    .Action("EditingPopup_Update", "ExpenseReport"))                    
                .Destroy(destroy => destroy
                    .Action("EditingPopup_Destroy", "ExpenseReport").Type(HttpVerbs.Post)))           
    )

//pass additional data to the READ action method
        function erLineItemsReadData() {
            return {
                expenseReportId: "@ViewBag.ExpenseReportId"
            };
        }

        function erLineItemsCreateData() {
            return {
                expenseReportId: "@ViewBag.ExpenseReportId"
                };
        }

        function erLineItemsUpdateData() {
            return {
                expenseReportId: "@ViewBag.ExpenseReportId"

                };
        }
@(Html.Kendo().Grid())
.名称(“网格”)
.列(列=>
{
columns.Bound(p=>p.ExpenseReportId).Visible(true);
columns.Bound(p=>p.ExpenseLineItemId).Visible(true);
columns.Bound(p=>p.ExpenseTypeDesc).Title(“费用类型”);
columns.Bound(p=>p.City).Title(“City”);
columns.Bound(p=>p.StateName).Title(“State”);
columns.Bound(p=>p.Date).Format(“{0:d}”).Title(“Date”);
列.绑定(p=>p.Amount).标题(“金额”);
columns.Bound(p=>p.endingmiliege).Title(“endingmiliege”);
columns.Bound(p=>p.BeginningMilege).Title(“起始里程”);
Command(Command=>{Command.Edit();Command.Destroy();});
})
.ToolBar(ToolBar=>ToolBar.Create().HtmlAttributes(新的{id=“btnAdd”}))
.Editable(Editable=>Editable.Mode(GridEditMode.PopUp).TemplateName(“NewExpense”).Window(w=>w.Width(500)))
.Pageable()
.Scrollable()
.HtmlAttributes(新的{style=“高度:430px;宽度=100%”)
.DataSource(DataSource=>DataSource
.Ajax()
.页面大小(20)
//.Events(Events=>Events.Sync(“onRequestStart”))
.Model(Model=>Model.Id(“ExpenseLineItemId”))
.Create(Create=>Create
.操作(“编辑弹出窗口\创建”、“支出报告”)
.Data(“erLineItemsCreateData”))
.Read(Read=>Read
.行动(“编辑弹出窗口”“费用报告”)
.Data(“erLineItemsReadData”))
.Update(更新=>Update
.行动(“编辑弹出窗口更新”、“支出报告”))
.Destroy(Destroy=>Destroy
.Action(“EditingPopup\u Destroy”、“ExpenseReport”).Type(HttpVerbs.Post)
)
//将其他数据传递给读取操作方法
函数erLineItemsReadData(){
返回{
expenseReportId:“@ViewBag.expenseReportId”
};
}
函数erLineItemsCreateData(){
返回{
expenseReportId:“@ViewBag.expenseReportId”
};
}
函数erLineItemsUpdateData(){
返回{
expenseReportId:“@ViewBag.expenseReportId”
};
}
更新

我设法解决了部分问题。请参阅下面的代码。现在,当我创建一行时,该行将在浏览器刷新后保留。但是,现在当页面第一次加载时,会在网格中插入一个新的空行。我不想要这种行为。另外,如果我添加了超过1行并刷新页面,那么除了我创建的最后一行之外,其他所有行都会消失

public ActionResult EditingPopup_Read([DataSourceRequest] DataSourceRequest request, ExpenseReportModel erLineItem, int expenseReportId)
    {
        if (Request.IsAjaxRequest())
        {

            var results = globalKip.DisplayExpenseReportLineItems_Employee(expenseReportId).ToList();

            for (int i = 0; i < results.Count; i++) // Loop through List with for
            {
                erLineItem.ExpenseReportId = (int)results[i].ERL_EPR_ID;
                erLineItem.ExpenseLineItemId = results[i].ERL_ID;
                erLineItem.ExpenseTypeDesc = results[i].ERL_ExpenseType;
                erLineItem.City = results[i].ERL_City;
                erLineItem.StateName = results[i].ERL_State;
                erLineItem.Date = (DateTime)results[i].ERL_Date;
                erLineItem.Amount = (Decimal)results[i].ERL_DollarAmount;
                erLineItem.EndingMileage = (int)results[i].ERL_EndingMileage;
                erLineItem.BeginningMileage = (int)results[i].ERL_BeginningMileage;
            }

            //return Json(new[] { erLineItem }.ToDataSourceResult(request, ModelState));

            return Json(new[] { erLineItem }.ToDataSourceResult(request, ModelState));


            //return Json(globalKip.DisplayExpenseReportLineItems_Employee(expenseReportId).ToList().ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
        }
        else
        {
            return View("Index", erLineItem);
        }
    }
public ActionResult EditingPopup\u Read([DataSourceRequest]DataSourceRequest请求,ExpenseReportModel erLineItem,int expenseReportId)
{
if(Request.IsAjaxRequest())
{
var results=globalKip.DisplayExpenseReportLineItems_Employee(expenseReportId).ToList();
for(int i=0;i
我解决了这个问题。存储过程结果返回的字段名与模型中的字段名不匹配。我重新命名了它们,并通过另一个轻微的修改(使用IQuerable而不是for循环)修复了整个问题。

插入后,您能否验证新插入的数据是否也存在于数据库中。这就是为什么我想知道发生了什么。我确实解决了部分问题,请参阅上面的更新。