پلاگین DataTables کتابخانه jQuery - قسمت چهارم
نویسنده: پژمان پارسائی
تاریخ: ۱۳۹۲/۰۴/۲۵ ۷:۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
به همین دلیل در سمت سرور، کلاسی خواهیم ساخت که نمایانگر یک مرورگر باشد. بدین صورت:
public class Browser
{
public int Id { get; set; }
public string Engine { get; set; }
public string Name { get; set; }
public string Platform { get; set; }
public float Version { get; set; }
public string Grade { get; set; }
}var $table = $('#browsers-grid');
$table.dataTable({
"bServerSide": true,
"sAjaxSource": "/Home/GetBrowsers"
});^[1-5]$
/// <summary>
/// Class that encapsulates most common parameters sent by DataTables plugin
/// </summary>
public class jQueryDataTableParamModel
{
/// <summary>
/// Request sequence number sent by DataTable,
/// same value must be returned in response
/// </summary>
public string sEcho { get; set; }
/// <summary>
/// Text used for filtering
/// </summary>
public string sSearch { get; set; }
/// <summary>
/// Number of records that should be shown in table
/// </summary>
public int iDisplayLength { get; set; }
/// <summary>
/// First record that should be shown(used for paging)
/// </summary>
public int iDisplayStart { get; set; }
/// <summary>
/// Number of columns in table
/// </summary>
public int iColumns { get; set; }
/// <summary>
/// Number of columns that are used in sorting
/// /// </summary>
public int iSortingCols { get; set; }
/// <summary>
/// Comma separated list of column names
/// </summary>
public string sColumns { get; set; }
}public JsonResult GetBrowsers(jQueryDataTableParamModel param)
{
IQueryable<Browser> allBrowsers = new Browsers().CreateInMemoryDataSource().AsQueryable();
IEnumerable<Browser> filteredBrowsers;
// Apply Filtering
if (!string.IsNullOrEmpty(param.sSearch))
{
filteredBrowsers = new Browsers().CreateInMemoryDataSource()
.Where(x => x.Engine.Contains(param.sSearch)
|| x.Grade.Contains(param.sSearch)
|| x.Name.Contains(param.sSearch)
|| x.Platform.Contains(param.sSearch)
).ToList();
float f;
if (float.TryParse(param.sSearch, out f))
{
filteredBrowsers = filteredBrowsers.Where(x => x.Version.Equals(f));
}
}
else
{
filteredBrowsers = allBrowsers;
}
// Apply Sorting
var sortColumnIndex = Convert.ToInt32(Request["iSortCol_0"]);
Func<Browser, string> orderingFunction = (x => sortColumnIndex == 0 ? x.Engine :
sortColumnIndex == 1 ? x.Name :
sortColumnIndex == 2 ? x.Platform :
sortColumnIndex == 3 ? x.Version.ToString() :
sortColumnIndex == 4 ? x.Grade :
x.Name);
var sortDirection = Request["sSortDir_0"]; // asc or desc
filteredBrowsers = sortDirection == "asc" ? filteredBrowsers.OrderBy(orderingFunction) : filteredBrowsers.OrderByDescending(orderingFunction);
// Apply Paging
var enumerable = filteredBrowsers.ToArray();
IEnumerable<Browser> displayedBrowsers = enumerable.Skip(param.iDisplayStart).
Take(param.iDisplayLength).ToList();
return Json(new
{
sEcho = param.sEcho,
iTotalRecords = allBrowsers.Count(),
iTotalDisplayRecords = enumerable.Count(),
aaData = displayedBrowsers
}, JsonRequestBehavior.AllowGet);
}$(function () {
var $table = $('#browsers-grid');
$table.dataTable({
"bProcessing": true,
"bStateSave": true,
"bServerSide": true,
"bFilter": true,
"sDom": 'T<"clear">lftipr',
"aLengthMenu": [[5, 10, 25, 50, -1], [5, 10, 25, 50, "All"]],
"bAutoWidth": false,
"sAjaxSource": "/Home/GetBrowsers",
"fnServerData": function (sSource, aoData, fnCallback) {
$.ajax({
"dataType": 'json',
"type": "POST",
"url": sSource,
"data": aoData,
"success": fnCallback
});
},
"aoColumns": [
{ "mDataProp": "Engine" },
{ "mDataProp": "Name" },
{ "mDataProp": "Platform" },
{ "mDataProp": "Version" },
{ "mDataProp": "Grade" }
],
"oLanguage": {
"sUrl": "/Content/dataTables.persian.txt"
}
});
}); var $table = $('#browsers-grid');
$table.dataTable({
"bJQueryUI": true,
"bProcessing": true,
"bSortClasses": false,
"bServerSide": true,
"bFilter": true,
"sPaginationType": "full_numbers",
"sScrollY": 400,
"sScrollX": "100%",
"sScrollXInner": "110%",
"bLengthChange": false,
"iDisplayLength": 20,
"aLengthMenu": [[5, 10, 25, 50, -1], [5, 10, 25, 50, "All"]],
"bAutoWidth": false,
"sAjaxSource": "Commands.aspx?cmd=all",
"fnServerData": function (sSource, aoData, fnCallback) {
$.ajax({
"dataType": 'json',
"type": "POST",
"url": sSource,
"data": aoData,
"success": fnCallback
});
},
"aoColumns":
[
{ "mDataProp": "Code" },
{ "mDataProp": "Caption" },
{ "mDataProp": "Comment" }
],
"oLanguage":
{
"sUrl": "dataTables.persian.txt"
}
}); fnRowCallback": function (nRow, aData, iDisplayIndex)
{
var StudentCode= aData["Code"];
$(nRow).attr("StudentCode",StudentCode);
return nRow;
}