У меня есть сетка Kendo UI, который мы используем на странице поиска:Кендо UI проблема DataSource
@(Html.Kendo().Grid<SMT.Models.SpecimenDetail>()
.Name("SpecimenDetailGrid")
.Columns(columns =>
{
columns.Bound(e => e.uniqueID).Hidden();
columns.Bound(e => e.contact_business_email).Width(120).Title("Owner Email");
columns.Bound(e => e.contact_business_phone).Width(120).Title("Owner Phone");
})
.ToolBar(tools =>
{
tools.Excel();
tools.Custom().Text("Back to Specimen Summary").HtmlAttributes(new { id = "goBack", style = "margin-left: 880px;" });
})
.Excel(excel => excel
.AllPages(true)
.FileName("SpecimenDetailGridData.xlsx")
.Filterable(true)
.ProxyURL(Url.Action("Excel_Export_Save", "Home"))
)
.Resizable(x => x.Columns(true))
.Reorderable(x => x.Columns(true))
.HtmlAttributes(new { style = "height:500px;" })
.Pageable()
.AutoBind(false)
.Editable(e => e.Mode(GridEditMode.InLine))
.DataSource(datasource => datasource
.Ajax()
.Model(model => {
model.Id(p => p.uniqueID);
model.Field(p => p.SampleID).Editable(false);
model.Field(p => p.company_business_name).Editable(false);
// disable company name on edit
// model.Field(p => p.company_business_name).Editable(false);
})
.Read(read => read.Action("GetSpecimenDetail", "Home").Data("FillSearchParms"))
.Update(update => update.Action("UpdateSpecimen", "Home").Data("FillUpdateParms"))
.Destroy(destroy => destroy.Action("DeleteSpecimen", "Home"))
.PageSize(10)
.Events(e => { e.RequestEnd("onRequestEnd");})
)
)
И на той же странице, у нас есть кнопка, которая вызывает функцию JQuery, которая обновляет сетку:
$(document).ready(function() {
$("#SearchBtn").click(function (e) {
e.preventDefault();
$("#divSearchSpecimenDetail").attr("style", "display: block;");
var grid = $("#SpecimenDetailGrid").data("kendoGrid");
//think this is the problem
grid.datasource.data = "FillSearchParams";
grid.dataSource.read();
grid.refresh();
e.preventDefault();
hideColumns(specimenCat);
$("#searchbar").data("kendoPanelBar").collapse($("li.k-state-active"));
})
});
и другая функция JQuery, которая выбирает поиска paramters:
function FillSearchParms() {
var units = defaultDDObj("Units");
var specimenCat = defaultDD("SpecimenCategory");
//debugger;
var searchParms = {
SpecimenCategory: specimenCat,
Units: units.Value,
uniqueID: $("#uniqueID").val(),
SampleID: $("#SampleID").val(),
ThicknessAtWeld1From: $("#ThicknessAtWeld1From").val(),
ThicknessAtWeld1To: $("#ThicknessAtWeld1To").val(),
OverlayThicknessFrom: $("#OverlayThicknessFrom").val(),
OverlayThicknessTo: $("#OverlayThicknessTo").val(),
}
проблема заключается в том, по какой причине clickin g кнопка вызывает действие чтения, но не вызов FillSearchParams. Следующее в кендо, и JQuery, так что я думаю, я просто форматировать строку:
grid.datasource.data = "FillSearchParams";
в кнопку вызова.
Заранее спасибо.
Какой формальный параметр определен в контроллере для вызова jquery? Вы добавляете дополнительную фразу json для данных, когда вы возвращаете searchParms. –
public ActionResult GetSpecimenDetail ([DataSourceRequest] DataSourceRequest x, SpecimenDetail request) x проблема была здесь, по какой-либо причине, если вызов поступает из сетки, он работает, а не от кнопки. – TrevorGoodchild
Я думаю, что функция данных должна возвращать SpecimenDetail {} для соответствия ожидаемому. –