Kendo UI MVC。如何更新网格并在$('#Grid')中添加新值.data('kendoGrid')。dataSource.read()

时间:2016-05-31 16:08:58

标签: kendo-ui kendo-grid kendo-asp.net-mvc

我需要在通过调用

更新数据库中的数据后更新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")) 
    ) 
)                    

当我更新Grid函数时,调用“ReadRequestData”

.Read(read => read.Action("ExchangeRate_Read", "MyController").Data("ReadRequestData"))

在此函数中,“date”的值从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();
    }
}

我需要在InLine Edit之后更新多个列,但只会自动更新已更改的列。我还需要更新从更改的列计算的列。

1 个答案:

答案 0 :(得分: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操作中,您可以使用当前日期,以防从视图传递的日期为空。