dataTable.net服务器端处理:不看起来刷新

问题描述:

对于我和我的同事一起工作的网站,我们使用www.dataTables.net中的dataTable格式,并且我们必须使用服务器端处理,因为多少表增长。这里的观点:dataTable.net服务器端处理:不看起来刷新

<%@ 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); 
} 

这里的分配功能

[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(); 
} 

另外,作为一个请注意,我的开发机器与我的网络机器不一样。所以我不能复制和粘贴,我也不能使用拇指驱动器。因此,我必须手动输入所有内容。所以,如果你看到一些错别字,只要问我,我会告诉你,如果它是正确的。此外,您可能会要求查看两个操作,我只是没有键入它们,只是因为输入其他内容需要多长时间。行动和分配。如果你想/需要看到他们,让我知道。谢谢。

+0

StringBuilder可能是你的朋友的一些代码隐藏代码,, – RobS 2010-08-19 14:56:29

+0

大声笑。我知道这不太好。我的同事们和我在不同的时间都碰过它。我只是一个格式标尺和一个“单线”。只要线不是500个字符。我用三元陈述滥用地狱。他们向我解释,因为他们喜欢尽可能多的断点。呸。 – XstreamINsanity 2010-08-19 15:03:29

哈哈。答案是使用最新版本。当我使用1.7.0时,我正在使用1.6.7。现在它工作正常。