Я бы вообще не использовал DataTable в качестве набора ответов. Вы можете сериализовать List, где T - объект [] ...
через Linq, вы можете сделать
...Select(item => new object[] {
item.field1,
item.field2,
...
});
Если вы используете значение по умолчанию с JsonResult (при условии, что вы делаете ASP.Net MVC здесь), вы можете сделать
return JsonResult(new {
total: totalRows
...
rows: resultFromLinq /* .Select(new object[] {....}) */
})
Вы можете связать лежащий в основе запрос в sproc, или выполнить linq2sql или объекты, nhibernate и т. Д. ... как хотите. Выполнение результатов из DataTable в JSON напрямую не сериализуется хорошо. Выбор литерала объекта [] {} в качестве последней строки приведет к сериализованному массиву массивов.
{
"total": 3,
...
rows: [
["val1", "val2", 3, ...]
],
...
}
Я бы тоже взглянул на пост Фила Хаака на jqGrid