0

Для сайта, с которым мы работаем, и мы работаем над этим, мы использовали формат dataTable с сайта www.dataTables.net, и нам нужно использовать обработку на стороне сервера из-за того, насколько таблицы растут. Вот вид: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> 
<% 
    } 
%> 

Вот функция sAjaxSource в AdminController.cs:

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 может быть вашим другом для некоторых из кода codebehind ,, – RobS

+0

lol. Я знаю, что это некрасиво. Мои коллеги и я трогаем все это в разное время. Я когда-нибудь могу придерживаться формата и «однострочный». До тех пор, пока строка не будет содержать 500 символов. Я злоупотребляю чертой из тернарных заявлений. Они объяснили это мне, поскольку им нравится иметь как можно больше точек останова. Ба. – XstreamINsanity

ответ

0

lol. Ответ заключается в использовании новейшей версии. Я использовал 1.6.7, когда я должен был использовать 1.7.0. Теперь он отлично работает.