gar*_*lur 17 asp.net-mvc jquery asp.net-mvc-4 kendo-ui kendo-grid
我希望能够在读取(刷新)后从我的Kendo网格中推送记录数.
这是我的剑道网格:
@(Html.Kendo().Grid(Model)
.Name("SearchWindowGrid")
.Columns(columns =>
{
columns.Bound(p => p.SYSTEM_ITEMS_SEGMENT1).Hidden();
})
.ClientRowTemplate(
"<tr>" +
"<td>" +
"<span><b>#: SYSTEM_ITEMS_SEGMENT1#</b></span> <br/>" +
"<span>#: DESCRIPTION# </span>" +
"</td>" +
"</tr>"
)
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("PopulateSearchWindow", "Item").Data("additionalSearchWindowInfo"))
.Events(ev => ev.Error("onErrorSearchWindow"))
)
.Selectable(s => s.Enabled(true).Mode(GridSelectionMode.Single).Type(GridSelectionType.Row))
.Scrollable(s => s.Enabled(true).Height(450))
)
Run Code Online (Sandbox Code Playgroud)
我的控制器动作:
public ActionResult PopulateSearchWindow([DataSourceRequest] DataSourceRequest request, string option, string searchText, string searchDesc)
{
try
{
var derps= _idg.SearchItems(searchText, searchDesc, _adg.OrganizationCode).ToList();
return Json(derps.ToDataSourceResult(request, ModelState));
}
catch (Exception e)
{
ModelState.AddModelError("ExceptionErrors", e.Message);
return Json(new List<Derp>().ToDataSourceResult(request, ModelState));
}
}
Run Code Online (Sandbox Code Playgroud)
这是强制数据刷新的函数:
function refreshData(){
$("#SearchWindowGrid").data("kendoGrid").dataSource.read();
//TODO: get the total count and push to #countElement
var count = $("#SearchWindowGrid").data("kendoGrid").length; //not sure what to do here
$("#countElement").val(count);
}
Run Code Online (Sandbox Code Playgroud)
我把我的TODO放在jQuery函数中的地方我希望能够获得行数并将该数字推送到我页面上的特定元素中.
Qui*_*rdt 34
根据这里的API参考
dataSource有一个total()函数.所以你应该能够在理论上做到以下几点:
function refreshData(){
var grid = $("#SearchWindowGrid").data("kendoGrid");
grid.dataSource.read();
var count = grid.dataSource.total();
$("#countElement").val(count);
}
Run Code Online (Sandbox Code Playgroud)
Sha*_*adi 11
我发现当你在.read()函数之后请求.total()时,即使你在read函数之后调用.refresh(),网格也不会真正刷新.通过定义更改事件,以下内容将使总体更加优雅和准确:
@(Html.Kendo().Grid(Model)
.Name("SearchWindowGrid")
...
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("PopulateSearchWindow", "Item").Data("additionalSearchWindowInfo"))
.Events(ev => ev.Error("onErrorSearchWindow").Change("OnGridChange"))
)
)
Run Code Online (Sandbox Code Playgroud)
使用以下脚本:
function refreshData(){
var grid = $("#SearchWindowGrid").data("kendoGrid");
grid.dataSource.read();
grid.refresh();
}
function OnGridChange() {
var grid = $("#SearchWindowGrid").data("kendoGrid");
var count = grid.dataSource.total();
$("#countElement").val(count);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
57985 次 |
最近记录: |