MVCGrid.net - Grid не отображает результаты, показывает все записи и пейджер также
Отображается сетка, в которой включен пейджер, но отображаются все записи без пейджинга. Также отображается пейджер. Код для метода RegisterGrid() выглядит следующим образом:
public static void RegisterGrids()
{
GridDefaults defaultSet1 = new GridDefaults()
{
Paging = true,
ItemsPerPage = 5,
NoResultsMessage = "Sorry, no results were found"
};
MVCGridDefinitionTable.Add("grdFiles", new MVCGridBuilder<FilesModel>(defaultSet1)
.WithAuthorizationType(AuthorizationType.AllowAnonymous)
.AddColumns(cols =>
{
cols.Add("FileName")
.WithValueExpression(p => p.Name.ToString());
cols.Add("LastModified").WithHeaderText("LastModified")
.WithValueExpression(p => p.LastModified.ToString());
cols.Add("Size").WithHeaderText("Size")
.WithValueExpression(p => p.Size.ToString());
})
.WithRetrieveDataMethod((context) =>
{
var res = DisplayFiles();
return new QueryResult<FilesModel>()
{
Items = res,
TotalRecords = res.Count // if paging is enabled, return the total number of records of all pages
};
})
);
}
Посмотреть код:
@model IEnumerable<FileViewerWeb.Models.FilesModel>
@using MVCGrid.Web;
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="well well-lg" style="padding-top:10px">
<h2>Explore Uploaded Files</h2>
</div>
@Html.MVCGrid("grdFiles")
Код контроллера:-
public ActionResult Index()
{
return View();
}
1 ответ
Когда вы используете пропустить, вы должны сначала использовать orderby.
if (options.GetLimitOffset().HasValue)
{
var limitOffset = options.GetLimitOffset().Value;
var limitRowCount = options.GetLimitRowcount().Value;
query = query.OrderBy(c=>c.name) //or add any column you prefer to order the list
.Skip(limitOffset)
.Take(limitRowCount);
}
Измените способ создания списка на запрос, а затем в конце передайте запрос через ToList()
var result = new QueryResult<FilesModel>();
var query = db.FilesModel.AsQueryable();
Вам не хватает кода
if (options.GetLimitOffset().HasValue)
{
var limitOffset = options.GetLimitOffset().Value;
var limitRowCount = options.GetLimitRowcount().Value;
query = query
.Skip(limitOffset)
.Take(limitRowCount);
}
Наконец, в точке повторного использования
result.Items = query.ToList();
result.TotalRecords = result.Items.Count();
return result;