0

I have this project I'm working on, and I need to add paging to an audit history log. I'm not aware of if MVC comes standard with a way to add paging or if I would have to install a NuGet package. At any rate, here is the code I have so far for the audit log I need to implement paging for(I am using a repository pattern for this):

In the Interface I have this:

IEnumerable<AuditRecord> GetAuditRecords(Expression<Func<AuditRecord, bool>> filter, Func<IQueryable<AuditRecord>, IOrderedQueryable<AuditRecord>> orderBy = null, int pageIndex = 0, int pageSize = 20); 

Then I have a UserHelper which has this:

public AuditInfo GetAuditInfo(SearchInfo searchInfo) { AuditInfo auditInfo = new AuditInfo(); if (searchInfo != null) { List<AuditRecord> auditRecords = UserManager.GetAuditRecords(record => record.Username == searchInfo.UserName, records => records.OrderByDescending(record => record.Date), 0, 100); auditInfo.AuditRecords = auditRecords; } return auditInfo; } 

Then in the controller:

public ActionResult AuditHistory(String username) { SearchInfo searchInfo = new SearchInfo { UserName = username }; AuditInfo auditInfo = _userHelper.GetAuditInfo(searchInfo); return PartialView(auditInfo); } 

And finally the view:

@if (Model != null && Model.AuditRecords != null && Model.AuditRecords.Count != 0) { <table required="False" border="0" class="data_std_results" id="tbl_std_documents"> <thead> <tr> <th> <span class="resulttabletitle">Date</span> </th> <th> <span class="resulttabletitle">Action</span> </th> <th> <span class="resulttabletitle">Application</span> </th> <th> <span class="resulttabletitle">Modified by</span> </th> <th> <span class="resulttabletitle">Response</span> </th> <th> <span class="resulttabletitle"></span> </th> </tr> </thead> <tbody> @{ int index = 0; } @foreach (var item in Model.AuditRecords) { <tr> <td>@item.Date.ToString() </td> <td>@item.ActionKey </td> <td>@item.ApplicationName </td> <td>@item.Delegate </td> <td>@item.Response </td> <td> @if (!string.IsNullOrEmpty(item.Comment)) { <a href="@string.Format("#comment{0}", index)" class="comment">Details</a> <div class="showNone"> <div id="@string.Format("comment{0}", index)" class="c_gen_lb_message"> <h3>@string.Format("{0} {1} for {2} at {3}", item.ActionKey, item.Response, item.ApplicationName, item.Date.ToString())</h3> <h5> Comments:</h5> @item.Comment @if (!string.IsNullOrEmpty(item.Reason)) { <h5> Reason:</h5> @item.Reason } <h5> Ip Address:</h5> @item.IpAddress @if (!string.IsNullOrEmpty(item.Delegate)) { <h5> Modified By:</h5> @item.Delegate } </div> </div> } </td> </tr> index = index + 1; } </tbody> </table> <div class="clearBoth"> </div> } else { <p> no records found</p> } <script type="text/javascript"> $(document).ready(function () { $('#tbl_std_documents').dataTable({ "bFilter": false, "bPaginate": false, "bSort": false, "bInfo": false }); $("a.comment").fancybox({ 'type': 'inline', 'transitionIn': 'elastic', 'transitionOut': 'elastic', 'hideOnContentClick': true, 'speedIn': 600, 'speedOut': 200, 'overlayShow': false }); }); </script> 

Any help or guidance on this would be appreciated. Thanks in advance!

1 Answer 1

3

I've used PagedList - it works very well with MVC. No need to write your own.

Sign up to request clarification or add additional context in comments.

1 Comment

That's one option I was actually looking into.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.