我的Razor View中有以下网格。
<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和剑道都不熟悉。谢谢!
答案 0 :(得分:0)
在Kendo UI演示中查看this sample。
基本上,如果你想发出一个自定义按钮或运行一些代码来执行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;
}
我担心你可能想要这个网格的两个不同的数据源,就像你的措辞一样。如果是这样会使事情复杂化。