открытый класс PeopleListController: Controller {// пример источника данных public List Persons {get {return new List {new Person {ID = 1, Birthday = DateTime.Now, Name = "John"}, new Person {ID = 2, Birthday = DateTime.Now, Name = "Paul"}, новый Персона {ID = 3, Birthday = DateTime.Now, Name = "Jane"}, новый Person {ID = 4, Birthday = DateTime.Now, Name = "Триша "}, новый человек {ID = 5, день рождения = DateTime.Now, имя =" Кевин "}, новый человек {ID = 6, день рождения = DateTime.Now, имя =" Дженис "}, новый человек {ID = 7, Birthday = DateTime.Now, Name = "Dennis"}, новый Персона {ID = 8, Birthday = DateTime.Now, Name = "Jack"}, новый Person {ID = 9, Birthday = DateTime.Now, Name = "Тревор "}, новый человек {ID = 10, день рождения = DateTime.Now, имя =" Майкл "}, новый человек {ID = 11, день рождения = DateTime.Now, имя =" Шон "}, новый человек {ID = 12, Birthday = DateTime.Now, Name = "Emerson"}, новый Персона {ID = 13, Birthday = DateTime.Now, Name = "Jay"}, новый Person {ID = 14, Birthday = DateTime.Now, Name = "Генри "}, новый человек {ID = 15, день рождения = DateTime.Now, имя =" Люк "}};}}
public ActionResult Index()
{
//get grid parameters from URL/POST (if any)
var gridParameters = GridParameters.GetGridParameters();
//get data
var data = GetDataUsingLINQ(gridParameters.Sort, //order by column
gridParameters.SortDirection, //order by direction
gridParameters.Page ?? 1, //returned page
5); //displayed rows per page
//set record count for use in view
ViewBag.GridRecordCount = Persons.Count;
return View(data);
}
//get data from datasource using LINQ (sample data access layer)
private IEnumerable<Person> GetDataUsingLINQ(string sort, string sortDir, int page, int numRows)
{
if (!string.IsNullOrEmpty(sort))
return Persons.AsQueryable().OrderBy(sort + " " + sortDir).Skip((page - 1) * numRows).Take(numRows).ToList();
else
return Persons.AsQueryable().Skip((page - 1) * numRows).Take(numRows).ToList();
}
//get data from datasource using SPROC (sample data access layer)
private IEnumerable<Person> GetDataUsingSPROC(string sort, string sortDir, int? page, int numRows)
{
//note: I did not use EF nor LINQ to SQL in the example below as I do
// not know any clean/elegant way of calling stored using those two
//note: server side paging and sorting SP implementation is not included, there are lots of articles on the web that discuss about it.
// You can google "sql server side paging sorting"
var sqlCon = new SqlConnection("<insert your connection string here>");
sqlCon.Open();
var sqlCmd = new SqlCommand();
sqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
sqlCmd.CommandText = "<insert your SP name here>";
sqlCmd.Connection = sqlCon;
sqlCmd.Parameters.AddWithValue("@Sort", sort);
sqlCmd.Parameters.AddWithValue("@SortDirection", sortDir);
sqlCmd.Parameters.AddWithValue("@Page", page);
sqlCmd.Parameters.AddWithValue("@NumRows", numRows);
var list = new List<Person>();
using(SqlDataReader reader = sqlCmd.ExecuteReader())
{
while (reader.Read())
{
var p = new Person();
p.ID = Convert.ToInt32(reader["ID"]);
p.Name = reader["Name"].ToString();
p.Birthday = Convert.ToDateTime(reader["Birthday"]);
list.Add(p);
}
}
sqlCon.Close();
return list;
}
}