2016-06-27 8 views
0

Ich erstelle eine Web-Seite mit Razor in VS2012, wo es eine Reihe von verfügbaren Projekten in einer Tabelle auflisten wird. Das Problem ist, dass diese Tabelle ziemlich lang werden kann. Gibt es eine Möglichkeit, diese Zeilen nach Seiten zu trennen (vielleicht 5 Projekte auf jeder Seite in der Tabelle), ohne Webgrid oder Javascript zu verwenden?Aufschlüsselung nach Seiten

Code:

@if (!Request.QueryString["UserID"].IsEmpty()){ 
    <table>  
    <tr> 
    <th >Group ID</th> 
    <th >PPMID</th> 
    <th >EPRID</th> 
    <th >Project Name</th> 
    <th >Delete</th> 
    </tr> 

    @foreach (var row in db.Query(sql_c)) { 
    counter++; 
    <tr class="@temp"> 

     <td><br /> 
      @row.UserID 
     </td> 

     <td><br /> 
      @row.PPMID 
     </td> 

     <td><br /> 
      @row.EPRID 
     </td> 

     <td ><br /> 
      @row.Proj_Name 
     </td> 

     <td><br /><button type="submit" onclick="return confirm('Are you sure you want to delete?')" id="delete" name="delete" value="@row.Link"/>Delete</td> 

    </tr>    
    } 
    </table> 
    <br /><input style="float:right;font-weight:bold" type="submit" id="add" name="add" value="Add New Project" /> 
} 
+0

warum nicht u wollen Javascript verwenden? – Mark

Antwort

0

Dies kann mit einem NuGet Paket PagedList.Mvc, führen Sie Schritt für Schritt Anleitung genannt erreicht werden - here

  1. öffnen Paket-Manager-Konsole in Visual Studio
  2. Setzen Sie das Standardprojekt: auf Ihre Webanwendung
  3. Geben Sie
  4. Paste Install-Package PagedList.Mvc in der Konsole und drücken
  5. öffnen web.config Datei in den ANSICHTEN Ordner und die Namensräume unten an dem <namespaces> Element

    <add namespace="PagedList"/> 
    <add namespace="PagedList.Mvc"/> 
    

Controller:

public class PagingController : Controller 
{ 
    public ActionResult Index(int?page) 
    { 
     int pageSize = 3; 
     int pageNumber = (page ?? 1); 

     List<Item> items = this.GetItems(); 
     return View(items.ToPagedList(pageNumber, pageSize)); 
    } 

    private List<Item> GetItems() 
    { 
     var item1 = new Item { Description = "Item 1", Number = "1" }; 
     var item2 = new Item { Description = "Item 2", Number = "2" }; 
     var item3 = new Item { Description = "Item 3", Number = "3" }; 

     var item4 = new Item { Description = "Item 4", Number = "4" }; 
     var item5 = new Item { Description = "Item 5", Number = "5" }; 
     var item6 = new Item { Description = "Item 6", Number = "6" }; 

     var item7 = new Item { Description = "Item 7", Number = "7" }; 
     var item8 = new Item { Description = "Item 8", Number = "8" }; 

     return new List<Item> { item1, item2, item3, item4, item5, item6 ,item7, item8}; 
    } 
} 

Ausblick:

@model PagedList.IPagedList<MVC_jqgrid_example.Controllers.Item> 

@using PagedList.Mvc; 
<link href="~/Content/PagedList.css" rel="stylesheet" type="text/css" /> 

@{ 
    Layout = null; 
} 

<table class="table"> 
    <tr> 
     <th> 
      Number 
     </th> 
     <th> 
      Description 
     </th> 
    </tr> 

@foreach (var item in Model) { 
    <tr> 
     <td> 
      @item.Number 
     </td> 
     <td> 
      @item.Description 
     </td> 
    </tr> 
} 
</table> 
<br /> 
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount 

@Html.PagedListPager(Model, page => Url.Action("Index", 
    new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter })) 

Ausgang:

MVC paged list

Verwandte Themen