剑道 UI MVC。如何更新 Grid 并在 $('#Grid').data('kendoGrid').dataSource.read() 中添加新值
Posted
技术标签:
【中文标题】剑道 UI MVC。如何更新 Grid 并在 $(\'#Grid\').data(\'kendoGrid\').dataSource.read() 中添加新值【英文标题】:Kendo UI MVC. How to update Grid and add new value in $('#Grid').data('kendoGrid').dataSource.read()剑道 UI MVC。如何更新 Grid 并在 $('#Grid').data('kendoGrid').dataSource.read() 中添加新值 【发布时间】:2016-09-29 18:16:38 【问题描述】:通过调用更新数据库中的数据后,我需要更新 Grid
$('#ExchangeGrid').data('kendoGrid').dataSource.read();
我需要用当前的 DateTime 更新网格,但网格正在更新 DateTimePicker() 中存在的时间
如何将时间更改为当前时间?
我的网格
@(html.Kendo().Grid<Internal.Models.ExchangeRateData>()
.Name("ExchangeGrid")
.Columns(columns =>
columns.Bound(p => p.originCurrencyFormated);
columns.Bound(p => p.targetCurrencyFormated);
columns.Bound(p => p.rate);
columns.Bound(p => p.percentage) ;
columns.Command(commands => commands.Edit(); );
columns.Bound(p => p.adjustedRate) ;
)
.Editable(edit =>
edit.Mode(GridEditMode.InLine);
)
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.ServerOperation(false)
.Model(model =>
model.Id(item => item.targetCurrency);
)
.Events(events =>
events.RequestEnd("onRequestEnd");
)
.Read(read => read.Action("ExchangeRate_Read", "MyController").Data("ReadRequestData"))
.Update(c => c.Action("Currencies_Update", "MyControllor"))
)
)
当我更新网格函数“ReadRequestData”时被调用
.Read(read => read.Action("ExchangeRate_Read", "MyController").Data("ReadRequestData"))
在这个函数中,“日期”的值是从 DateTimePicker 中填充的
function ReadRequestData()
return
"date": $('#dateList').val()
;
DateTimePicker 的代码:
@(Html.Kendo().DateTimePicker()
.Name("dateList")
.Start(CalendarView.Month)
.Format("dddd MMMM dd, yyyy H:mm:ss")
.Value(DateTime.Now)
.Events(e => e.Change("changeDate"))
)
onRequestEnd(e)函数的代码
function onRequestEnd(e)
if (e.type == "update")
$('#ExchangeGrid').data('kendoGrid').dataSource.read();
我需要在行内编辑后更新几列,但自动只更新已更改的列。我还需要更新从更改的列计算的列。
【问题讨论】:
***.com/questions/21863449/… 【参考方案1】:首先,使用Sync 事件,而不是RequestEnd 事件。此外,当您调用 DataSource 的 read()
方法时,将调用 ReadRequestData
函数来获取日期并将其传递给您的 ExchangeRate_Read
操作。但是,数据更新后,您不需要该日期。因此,您只需清除 DateTimePicker。
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.ServerOperation(false)
.Model(model =>
model.Id(item => item.targetCurrency);
)
.Events(events =>
events.Sync("onSync");
)
.Read(read => read.Action("ExchangeRate_Read", "MyController").Data("ReadRequestData"))
.Update(c => c.Action("Currencies_Update", "MyControllor"))
)
)
function onSync(e)
$("#dateList").data("kendoDateTimePicker").value('');
$('#ExchangeGrid').data('kendoGrid').dataSource.read();
现在,在您的 ExchangeRate_Read
操作中,您可以使用当前日期,以防从视图传递的日期为空。
【讨论】:
谢谢。我还在控制器中添加了“数据”的代码: public ActionResult ExchangeRate_Read([DataSourceRequest] DataSourceRequest request, string currencyName = "usd", string date = null) 。 . . if (date == null || date == string.Empty) DateTime dateNow = DateTime.Now;日期 = dateNow.ToString(); 不,你没有。你刚刚对我的回答投了赞成票。您需要单击复选标记将其标记为已回答。以上是关于剑道 UI MVC。如何更新 Grid 并在 $('#Grid').data('kendoGrid').dataSource.read() 中添加新值的主要内容,如果未能解决你的问题,请参考以下文章
Telerik Kendo Grid (MVC) 更新后刷新