【发布时间】:2019-01-16 05:08:50
【问题描述】:
您好,我开发了一个 Mvc 应用程序,它使用 select 语句从 Sql 服务器检索数据。我需要在数据表上实现服务器端分页和排序,我可以使用 json 检索数据并显示它。 这是一个非常简单的表格,用于测试目的,数据不是很大。
[HttpPost]
public ActionResult GetList()
{
int start = Convert.ToInt32(Request["start"]);
int length = Convert.ToInt32(Request["length"]);
string sortColumnName = Request["columns[" + Request["order[0][column]"] + "][name]"];
string sortDirection = Request["order[0][dir]"];
List<YesNoModel> yesno = new List<YesNoModel>();
using (SqlConnection sqlCon = new SqlConnection(ConfigurationManager.ConnectionStrings["TestApp"].ToString()))
{
YesNoModel yesNoMopdel = new YesNoModel();
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.CommandType = CommandType.Text;
sqlCmd.CommandText = "Select ynID,ynName FROM [Yes_No] WITH (NOLOCK)";
sqlCmd.Connection = sqlCon;
sqlCon.Open();
using (SqlDataReader sdr = sqlCmd.ExecuteReader())
{
while (sdr.Read())
{
yesno.Add(new YesNoModel
{
ynID = Convert.ToInt32(sdr["ynID"].ToString()),
ynName = sdr["ynName"].ToString(),
Action = "<a class='btn btn-info btn-xs' style='margin-top:6px' href='" + this.Url.Action("Edit", "YesNo", new { Id = Convert.ToInt32(sdr["ynID"].ToString()) }) + "'>Edit</a>" + "<a class='btn btn-danger btn-xs' style='margin-top:6px' onclick='return confirm()' href='" + this.Url.Action("Delete", "YesNo", new { Id = Convert.ToInt32(sdr["ynID"].ToString()) }) + "'>Delete</a>"
});
}
}
}
yesno.OrderBy(sortColumnName + " " + sortDirection);
yesno.Skip(start).Take(length);
return Json(new { data = yesno }, JsonRequestBehavior.AllowGet);
}
$('.table').DataTable({
"ajax": {
"url": "/YesNo/GetList",
"type": "POST",
"datatype": "json"
},
"columns": [
{ "data": "ynID", "name": "ynID" },
{ "data": "ynName", "name": "ynName" },
{"data":"Action","name":"Action"}
],
"serverSide": "true",
"processing":"true",
"bDestroy": true
});
当我在调试模式下运行时单击排序时,我可以看到它正在选择正确的列并更改排序方向,我可以看到表格正在处理,但它实际上并没有改变顺序。谁能帮帮我。
【问题讨论】:
-
只需将排序后的数据返回给
yesno。像这样yesno = yesno.OrderBy(sortColumnName + " " + sortDirection).ToList()
标签: c# json asp.net-mvc