0

我的 Razor 视图中有以下网格。

<h2>Exchange Rates</h2>
@(Html.Kendo().Grid<ExchangeRateModel>()
      .Name("exchangeRateGrid")
      .DataSource(builder => builder
                                 .Ajax()
                                 .Model(model =>
                                            {
                                                model.Id(exchangeRate => exchangeRate.ExchangeRateId);
                                                model.Field(exchangeRate => exchangeRate.SourceCurrencyCode);
                                                model.Field(exchangeRate => exchangeRate.DestinationCurrencyCode);
                                                model.Field(exchangeRate => exchangeRate.Rate);
                                            })
                                 .Read("Get", "ExchangeRate")
      )
      .Columns(columns =>
                   {
                       columns.Bound(er => er.SourceCurrencyCode).Title("From");
                       columns.Bound(er => er.DestinationCurrencyCode).Title("To");
                       columns.Bound(er => er.Rate).Title("Rate");
                   })
      .Editable(ed=>ed.Mode(GridEditMode.PopUp))
      .Sortable()
      .Pageable()
      .ToolBar(tb => tb.Custom().Name("Import exchange rates from ECB").Action("ImportExchangeRates", "ExchangeRate"))
)

网格有一个工具栏命令,用于检索一些汇率。更新完成后,这些费率应显示在网格中。我正在寻找使用 Ajax 进行的请求(发生这种情况)。现在的问题:

我应该在 ImportExchangeRates 命令或其他地方做什么,以便:1) 页面不会重新加载或重定向到白页 2) 使用此命令更新的值更新网格。

目前我的命令以 return Redirect(Request.UrlReferrer.ToString()); 结尾 但这是不可接受的,因为这会重新加载整个页面。如果我返回 null,则站点将重定向到一个空页面。

我确信这很简单,但我对 MVC 和 Kendo 都是新手。谢谢!

4

1 回答 1

0

在 Kendo UI Demos 上查看此示例。

基本上,如果您想发出一个自定义按钮或其他运行某些执行 Ajax 的代码的东西,您很可能必须深入研究一些 JavaScript。

.Toolbar(tb => tb.Template(@<text>
    <button onClick="return importExchangeRates();">Import exchange rates from ECB</button>
</text>);

然后在您的脚本(客户端)中:

function importExchangeRates() {
    // perform Ajax request here, refresh grid in success handler
    var grid = $("#exchangeRateGrid").data("kendoGrid");

    // return false to prevent button doing silly things with the page in some browsers
    return false;
}

我担心您可能希望这个网格有两个不同的数据源,只是从您的措辞方式来看。如果是这样,事情就会复杂化。

于 2013-08-19T00:38:33.293 回答