OK 私は別のものを持っていますが、単純なものがまた欠けていると確信しています。Kendo Grid に json の結果セットを設定します。読み込みは、剣道ドロップダウン リスト コントロールからの選択によってトリガーされます。データが webapi から返され、json の結果に変換されていることがわかります。しかし、データはグリッドに表示されません。
私が間違っているのは何ですか?
グリッド ビューを追加する方法は次のとおりです。
<div id="messageGridArea">
@Html.Partial("Messages")
</div>
ドロップダウンリストの定義は次のとおりです。
@(Html.Kendo().DropDownList()
.Name("importDates")
.CascadeFrom("clients")
.OptionLabel("Select Import Date...")
.DataSource(source => {
source.Read(read =>
{
read.Action("GetDistinctImportDates", "Home").Data("filterImportDates");
})
.ServerFiltering(true);
})
.AutoBind(false)
.Enable(false)
.Events(e => e.Change("OnImportDatesChanged"))
)
グリッド パラメータのフィルタは次のとおりです。
function filterGridMessages() {
return { importdate: $("#importDates").val() };
}
グリッドを設定するイベントは次のとおりです。
function OnImportDatesChanged(e) {
var grid = $("#clientMessages").data("kendoGrid");
grid.dataSource.read();
}
グリッドの定義は次のとおりです。
@(Html.Kendo().Grid<Pulse.Data.Model.ImportHeader>()
.Name("clientMessages")
.AutoBind(false)
.Filterable()
.Groupable()
.Sortable()
.Pageable()
.Scrollable()
.DataSource(dataSource => dataSource
.Ajax()
.Model(model => model.Id(p => p.ImportId))
.ServerOperation(false)
.Read(read =>
read.Action("GetImportMessages", "Home").Data("filterGridMessages")
)
)
.Columns(columns =>
{
columns.Bound("ImportStatus").Title("I").Width("3%");
columns.Bound("ImportTime").Title("Import Time");
columns.Bound("RecordStatus").Title("Status").Filterable(true).Sortable(true).Width("7%");
columns.Bound("RecordState").Title("State").Filterable(true).Sortable(true).Width("7%");
columns.Bound("RecordAction").Title("Action").Filterable(true).Sortable(true).Width("7%");
})
)
最後に、データを読み取るコントローラー コードを次に示します。
public JsonResult GetImportMessages(string importdate)
{
IEnumerable<ImportHeader> messages = null;
var msgs = client.GetStringAsync(string.Format("api/importheaders?$filter=RecordSource eq '{0}'", importdate)).Result;
if (!string.IsNullOrWhiteSpace(msgs))
messages = JsonConvert.DeserializeObject<IEnumerable<ImportHeader>>(msgs);
return Json(messages, JsonRequestBehavior.AllowGet);
}