私は今これに取り組んでいます。私はASP.Net MVC 2 Webアプリケーションを使用しており、dataTablesを宗教的に使用しており、各テーブルに1000を超えるレコードを表示する必要があります。サーバー側の処理は、私にとって最適な方法でした。これが私たちが持っているものです。
ビュー (/Admin/Unassigned) での宣言は次のとおりです。
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$('#adminUnassignedTable').dataTable({
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "/Admin/UnassignedTable"
});
});
</script>
これがコントローラー関数です (/Admin/UnassignedTable)。
public void UnassignedTable()
{
statusID = (int)PTA.Helpers.Constants.Queue;
locationID = (int)PTA.Helpers.Constants.Reviewer;
_AdminList = PTA.Models.IPBRepository.GetIPBsByStatus(Convert.ToInt32(statusID), Convert.ToInt32(locationID)); //_AdminList is an IEnumerable<IPB>, IPB being our class
IEnumerable<IPB> _NewList;
int nDisplayStart = Convert.ToInt32(HttpContext.Request.QueryString.Get("iDisplayStart");
int nDisplayLength = Convert.ToInt32(HttpContext.Request.QueryString.Get("iDisplayLength");
_NewList = _AdminList.Skip<IPB>(nDisplayStart).Take<IPB>(nDisplayLength).ToList<IPB>();
string strOutput = "{";
strOutput += "\"sEcho\":" + HttpContext.Request.QueryString.Get("sEcho") + ", ";
strOutput += "\"iTotalRecords\":" + _AdminList.Count().ToString() + ", ";
strOutput += "\"iTotalDisplayRecords\":" + _AdminList.Count().ToString() + ", ";
strOutput += "\"aaData\":[";
foreach (IPB ipb in _NewList)
{
strOutput += "[ ";
strOutput += "\"" + ipb.IPBName + "\",";
strOutput += "\"" + ipb.PubDate + "\",";
strOutput += "\"" + ipb.Change + "\",";
strOutput += "\"" + ipb.ChangeDate + "\",";
strOutput += "\"" + ipb.TotalParts + "\",";
strOutput += "\"" + ipb.TotalPartsReports + "\",";
strOutput += "\"" + ipb.ALC + "\",";
strOutput += "\"" + ipb.DateAdded + "\",";
strOutput += "\"" + "" + "\","; //Need to add drop down control, that's why it's blank.
strOutput += "\"" + "" + "\","; //Need to add drop down control, that's why it's blank.
strOutput += "\"" + "" + "\","; //Need to add drop down control, that's why it's blank.
strOutput += "\"" + "" + "\""; //Need to add drop down control, that's why it's blank.
strOutput += "]";
if (ipb != _NewList.Last())
{
strOutput += ", ";
}
}
strOutput += "]}";
Response.Write(strOutput);
}
ノート!!!!!!!コントロールを追加するときは、バックスラッシュが JSON データに含まれている必要があるため、コントロール値の引用符を \\" のように配置する必要があります。
うまくいけば、コントローラーで Web サービスにアクセスできます。私は Web プログラミングにあまり詳しくないので、何をする必要があるのかわかりません。これだけで助かると思いました。