2016-12-01 3 views
0

У меня есть сетка 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"; 

в кнопку вызова.

Заранее спасибо.

+0

Какой формальный параметр определен в контроллере для вызова jquery? Вы добавляете дополнительную фразу json для данных, когда вы возвращаете searchParms. –

+0

public ActionResult GetSpecimenDetail ([DataSourceRequest] DataSourceRequest x, SpecimenDetail request) x проблема была здесь, по какой-либо причине, если вызов поступает из сетки, он работает, а не от кнопки. – TrevorGoodchild

+0

Я думаю, что функция данных должна возвращать SpecimenDetail {} для соответствия ожидаемому. –

ответ

0

Необходимо, чтобы добавить эту строку в вызове JQuery:

grid.dataSource.page (1);