同僚と私が取り組んでいるサイトでは、www.dataTables.net の dataTable 形式を使用しましたが、テーブルが大きくなるため、サーバー側の処理を使用する必要があります。ビューは次のとおりです。
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
$('#adminUnassignedTable').dataTable({
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "/Admin/UpdateUnassignedReviewer",
"sPaginationType": "full_numbers"
});
});
</script>
<h2>Unassigned IPBs</h2>
<%
using (Html.BeginForm("Assign","Admin",FormMethod.Post))
{
Html.RenderPartial("AssignmentControls", "Reviewer");
%>
<table cellpadding="0" cellspacing="0" border="0" class="display" id="adminUnassignedTable">
<thead><tr>
<th>IPB Number</th>
<th>IPB Pub Date</th>
<th>Change Number</th>
<th>Change Date</th>
<th>Total # of Parts</th>
<th>Total # of Report Parts</th>
<th>ALC</th>
<th>Date Loaded</th>
<th>Priority</th>
<th>Update</th>
</tr></thread>
<tbody><tr><td colspan="12" class="dataTable_empty">Loading Data From Server</td></tr></tbody>
</table>
<%
}
%>
AdminController.cs の sAjaxSource 関数は次のとおりです。
public void UpdateUnassignedReviewer()
{
int[] nArrayStatus = { (int)PTA.Helpers.Constants.State.Queue }
int nTotalRecordCount = 0;
string strEcho = "";
_DisplayRecords = PTA.Helpers.Utility.BeginServerSideProcessing(HttpContext.Request.QueryString, nArrayStates, (int)PTA.Helpers.Constants.Location.Reviewer, ref nTotalRecordCount, ref strEcho);
string strOutput = "";
if (_DisplayRecords.Count() <= 0)
{
PTA.Helpers.Utility.WriteBlankRecord(ref strOutput, strEcho, 12);
}
else
{
strOutput += "{\"sEcho\":" + strEcho + ", ";
strOutput += "\"iTotalRecords\": " + nTotalRecordCount.ToString() + ", ";
strOutput += "\"iTotalDisplayRecords\": " + nTotalRecordCount.ToString() + ", ";
strOutput += "\"aaData\": [";
int nCounter = 0;
foreach (IPB ipb in _DisplayRecords)
{
strOutput += "[ "
strOutput += "\"";
strOutput += PTA.Helpers.Utility.CreateDetailsLinkHTML(ipb.ID.ToString(), ipb.IPBName) + "\",";
strOutput += "\"" + ipb.PubDate + "\",";
strOutput += "\"" + ipb.Change + "\",";
strOutput += "\"" + ipb.ChangeDate + "\",";
strOutput += "\"" + ipb.TotalParts + "\",";
strOutput += "\"" + ipb.TotalPartsReport + "\",";
strOutput += "\"" + ipb.ALC + "\",";
strOutput += "\"" + ipb.DateAdded + "\",";
strOutput += "\"" + ipb.Priority + "\",";
strOutput += "\"" + PTA.Helpers.Utility.CreateCheckBoxHTML(ipb.ID.ToString(), nCounter++);
strOutput += "\"";
strOutput += "]";
if(ipb != _DisplayRecords.Last())
{
strOutput += ", ";
}
}
}
strOutput += "]}";
Response.Write(strOutput);
}
これがAssign関数です
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Assign(string PriorityDropDown, string UserDropDown, string ActionDropDown)
{
ResetTempData(ref statusID, ref locationID, ref area);
int ipb_id = 0,
action = -1;
action = Request.Form["ActionDropDown"].ToString() == null || Request.Form["ActionDropDown"].ToString() == "" ? -1 : Convert.ToInt32(Request.Form["ActionDropDown"]);
string strUser = "",
strPriority = "";
strUser = Request.Form["UserDropDown"];
strPriority = Request.Form["PriorityDropDown"];
string[] strTemp = Request.Form.AllKeys;
foreach(string str in strTemp)
{
if(str.Contains("AssignCheck"))
{
ipb_id = Convert.ToInt32(Request.Form[str]);
if(action > -1 || (strUser != null || strUser != "") || (strPriority != null || strPriority != ""))
{
switch (action)
{
case -1:
Update(ipb_id, strPriority, strUser);
break;
case 1:
case 2:
case 5:
case 8:
Action(ipb_id, action);
break;
default: break;
}
}
}
}
return RedirectToAction("AdminView");
}
これがAdminView関数です
public ActionResult(int? statusID, int? locationID)
{
if (!System.Web.HttpContext.Current.User.IsInRole("Admin"))
{
return RedirectToAction("Index", "Home");
}
PTA.Modesl.DataFactory factory = new DataFactory();
if(statusID == null)
{
statusID = (int)PTA.Helpers.Constants.State.Queue;
ViewData["status"] = statusID;
}
if(locationID == null)
{
locationID = (int)PTA.Helpers.Constants.Location.Reviewer;
ViewData["location"] = locationID;
}
TempData["pageStatus"] = statusID;
TempData["pageLocation"] = locationID;
TempData["Area"] = Request.QueryString["Area"]?? "Unassigned";
return View();
}
また、注記として、私の開発マシンはネットワーク マシンと同じではありません。そのため、コピーと貼り付けができず、サム ドライブも使用できません。したがって、すべてを手動で入力する必要があります。タイプミスを見つけた場合は、私に尋ねてください。正しいかどうかをお知らせします。また、2 つのアクションが表示される可能性がありますが、他のすべてを入力するのに時間がかかるという理由だけで、それらを入力しませんでした。アクションと割り当て。見たい/見たい場合は、私に知らせてください。ありがとう。