【问题标题】:dataTable.net Server-Side Processing: Not seeming to refreshdataTable.net 服务器端处理:似乎没有刷新
【发布时间】:2010-08-19 14:53:48
【问题描述】:

对于我和我的同事正在开发的网站,我们使用了来自 www.dataTables.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();
}

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

【问题讨论】:

  • StringBuilder 可能是你的一些代码隐藏代码的朋友,
  • 哈哈。我知道它不漂亮。我和我的同事在不同的时间接触它。只要有可能,我就是格式坚持者和“单线”。只要该行不是 500 个字符。我滥用三元语句。他们向我解释,因为他们喜欢有尽可能多的断点。呸。

标签: visual-studio-2008 asp.net-mvc-2 server-side datatables


【解决方案1】:

哈哈。答案是使用最新版本。当我应该使用 1.7.0 时,我使用的是 1.6.7。现在可以正常使用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-28
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多