2017-05-30 1 views
0


Ich habe nicht verstanden, wie serverseitige Paginierung mit MySql und Datatable in einem C# MVC funktioniert. eine kontrollierte in C# I erstellt, in dem ich die Verbindung mit einer MySQL-Datenbank eingerichtet (Ich folgte diesem Beispiel, um das zu tun):Serverseitige Paginierung mit MVC C# und MySql

public ActionResult connectDB() 
    { 

     const string DB_CONN_STR = "Server=MyServer;Port=MyPort;Uid=MyUid;Database=MyDB;"; 

     MySqlConnection cn = new MySqlConnection(DB_CONN_STR); 

     try 
     { 

      string sqlCmd = "select * from t_documento"; 

      MySqlDataAdapter adr = new MySqlDataAdapter(sqlCmd, cn); 
      adr.SelectCommand.CommandType = CommandType.Text; 
      DataTable dt = new DataTable(); 
      adr.Fill(dt); //opens and closes the DB connection automatically !! (fetches from pool) 

      return Content(JsonConvert.SerializeObject(dt).ToString()); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine("{oops - {0}", ex.Message); 
      return Content(ex.ToString()); 
     } 
     finally 
     { 
      cn.Dispose(); // return connection to pool 

     }   
    } 

jedoch auf diese Weise, Ich nehme alle gespeicherten Datensätze in diese Tabelle, aber ich möchte die Datatable füllen (die Inizialisierung meiner Datentabelle ist in einer cshtml Seite) durch die Implementierung der Seitenumbruch. Ich habe viele Artikel gelesen, aber ich habe kein klares Beispiel mit einer MySql DB gefunden. Kann mir bitte jemand helfen? Vielen Dank!

+0

Sie können diese unter Verwendung von (gespeichert) Verfahren tun. Fügen Sie Ihrem Controller einfach eine Seitennummer hinzu und übergeben Sie diese an das Modell und die Prozedur. Hier sind einige gute Referenzen für die Paginierung in SQL Server: [Eine effizientere Methode für die Paging durch große Ergebnismengen] (http://www.4guysfromrolla.com/webtech/042606-1.shtml) und [Zeilenversatz in SQL Server] (https://stackoverflow.com/questions/187998/row-offset-in-sql-server). Ich bin sicher, MySql DB wird sehr ähnlich sein. – Zerubbabel

Antwort

0

Versuchen Sie diese Example der Server-Seitenumbruch.

/Controllers/ProductController.cs

public class ProductController : Controller 
{ 
    public object Index(int? page) 
    { 
     var products = MyProductDataSource.FindAllProducts(); //returns IQueryable<Product> representing an unknown number of products. a thousand maybe? 

     var pageNumber = page ?? 1; // if no page was specified in the querystring, default to the first page (1) 
     var onePageOfProducts = products.ToPagedList(pageNumber, 25); // will only contain 25 products max because of the pageSize 

     ViewBag.OnePageOfProducts = onePageOfProducts; 
     return View(); 
    } 
} 

/Views/Products/Index.cshtml

@{ 
    ViewBag.Title = "Product Listing" 
} 
@using PagedList.Mvc; //import this so we get our HTML Helper 
@using PagedList; //import this so we can cast our list to IPagedList (only necessary because ViewBag is dynamic) 

<!-- import the included stylesheet for some (very basic) default styling --> 
<link href="/Content/PagedList.css" rel="stylesheet" type="text/css" /> 

<!-- loop through each of your products and display it however you want. we're just printing the name here --> 
<h2>List of Products</h2> 
<ul> 
    @foreach(var product in ViewBag.OnePageOfProducts){ 
     <li>@product.Name</li> 
    } 
</ul> 

<!-- output a paging control that lets the user navigation to the previous page, next page, etc --> 
@Html.PagedListPager((IPagedList)ViewBag.OnePageOfProducts, page => Url.Action("Index", new { page })) 
+0

Vielen Dank, aber ich bin nur an dieser spezifischen Implementierung interessiert ... Ich brauche Databases UND MySql, nicht Sql Server oder eine andere Art von Datenbank ... Ich weiß nicht, ob der bestimmte Typ von db relevant ist oder nicht, aber ich habe wirklich Schwierigkeiten, Beispiele zu finden, die diese Art von Kombination verwenden. – Robychan