剑道 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() 中添加新值的主要内容,如果未能解决你的问题,请参考以下文章

MVC 剑道网格自定义过滤器

Telerik Kendo Grid (MVC) 更新后刷新

剑道 UI MVC 密码

我如何从 mvc 的剑道 ui 网格的下拉列表中获取选定的值

如何隐藏网格标题剑道ui?

Kendo Grid 如何更新、创建、删除数据源