In the server side, we must handle these query string arguments for paging:

jtStartIndex: Start index of records for current page.

jtPageSize: Count of maximum expected records.

Also, we must handle these query string argument for sorting:

jtSorting: A string which represents requested sorting.
It is built from sorting field name plus sorting direction.
For instance, It can be 'Name ASC', 'BirtDate DESC', 'Age ASC'... etc.

You can use such an SQL statement for paging and sorting:

--MySQL
SELECT * FROM Students ORDER BY Name ASC LIMIT 20,10
--SQL Server
SELECT * FROM
(SELECT ROW_NUMBER() OVER (ORDER BY Name ASC) AS Row, * FROM Students)
AS StudentsWithRowNumbers
WHERE Row > 20 AND Row <= 30

In this SQL statement, we are getting 3rd page (if page size is 10).
We are skipping 20 records (jtStartIndex) and getting 10 records (jtPageSize). Also we used 'Name ASC' for sorting (jtSorting).

Also, one additional information is expected from server:

TotalRecordCount: Total count of records (not only this page).

You can use such an SQL statement to get count of all students:

Select Count(*) FROM Students

Advertisement: Professional startup template for ASP.NET MVC & AngularJs by creator of jTable!