如何从 DataTable 创建分页列表以进行分页
How to create PagedList from DataTable for Pagination
我在 ASP.NET MVC 中,我目前正在使用 ADO.NET 查询我的数据库,填充一个 DataTable,然后将 DataTable 传递到我的视图以在屏幕上显示数据。 (我故意不遵循 MVC 最佳实践,我只是想弄清楚一个概念)
public ActionResult Index()
{
DataTable dt = new DataTable();
using (AdomdConnection con = new AdomdConnection(consString))
{
con.Open();
AdomdCommand query = new AdomdCommand("Some query blah blah", con);
AdomdDataAdapter da = new AdomdDataAdapter(query);
da.Fill(dt);
}
return View(dt);
}
并在视图中
@model System.Data.DataTable
@{
ViewBag.Title = "Home Page";
}
<table id="infoTable">
<thead>
<tr>
<th>Key</th>
<th>Weight</th>
<th>Discount Amount</th>
<th>Sales Count</th>
</tr>
</thead>
@foreach(System.Data.DataRow row in Model.Rows)
{
<tr>
@foreach(var cell in row.ItemArray)
{
<td>@cell</td>
}
</tr>
}
</table>
这当前在我的屏幕上显示了所有数据行。我想添加分页,让屏幕上一次只显示几条记录,并使用table底部的控件查看更多记录。
我找到了 PagedList,这个概念似乎很管用。我不想将我的 DataTable 传递到我的视图,而是想传递一个 PagedList,但我不确定如何将我的 DataTable 转换为 PagedList。
有谁知道如何将我的 DataTable 放入 PagedList,然后将 PagedList 传递到我的视图以进行分页?
首先我将我的 DataTable 分离到它自己的模型中,然后在这个模型中,
我创造了
public List<DataRow> list { get; set;}//Regular list to hold data from Datatable
public PagedList<DataRow> plist { get; set; }//Paged list for pagination to be filled with data from regular List
然后我将我的 DataTable 转换为列表
list = dt.AsEnumerable().ToList();
然后我使用 List
初始化了 PagedList
plist = new PagedList<DataRow>(list, page ?? 1, 5);
然后我能够将此模型传递给我的视图,并能够遍历我的 PagedList
plist
我在 ASP.NET MVC 中,我目前正在使用 ADO.NET 查询我的数据库,填充一个 DataTable,然后将 DataTable 传递到我的视图以在屏幕上显示数据。 (我故意不遵循 MVC 最佳实践,我只是想弄清楚一个概念)
public ActionResult Index()
{
DataTable dt = new DataTable();
using (AdomdConnection con = new AdomdConnection(consString))
{
con.Open();
AdomdCommand query = new AdomdCommand("Some query blah blah", con);
AdomdDataAdapter da = new AdomdDataAdapter(query);
da.Fill(dt);
}
return View(dt);
}
并在视图中
@model System.Data.DataTable
@{
ViewBag.Title = "Home Page";
}
<table id="infoTable">
<thead>
<tr>
<th>Key</th>
<th>Weight</th>
<th>Discount Amount</th>
<th>Sales Count</th>
</tr>
</thead>
@foreach(System.Data.DataRow row in Model.Rows)
{
<tr>
@foreach(var cell in row.ItemArray)
{
<td>@cell</td>
}
</tr>
}
</table>
这当前在我的屏幕上显示了所有数据行。我想添加分页,让屏幕上一次只显示几条记录,并使用table底部的控件查看更多记录。
我找到了 PagedList,这个概念似乎很管用。我不想将我的 DataTable 传递到我的视图,而是想传递一个 PagedList,但我不确定如何将我的 DataTable 转换为 PagedList。
有谁知道如何将我的 DataTable 放入 PagedList,然后将 PagedList 传递到我的视图以进行分页?
首先我将我的 DataTable 分离到它自己的模型中,然后在这个模型中,
我创造了
public List<DataRow> list { get; set;}//Regular list to hold data from Datatable
public PagedList<DataRow> plist { get; set; }//Paged list for pagination to be filled with data from regular List
然后我将我的 DataTable 转换为列表
list = dt.AsEnumerable().ToList();
然后我使用 List
初始化了 PagedListplist = new PagedList<DataRow>(list, page ?? 1, 5);
然后我能够将此模型传递给我的视图,并能够遍历我的 PagedList
plist