2015-10-26 57 views
0

我使用了以下內容:ASP .Net 2008 3.5 Webforms/Teradata Database。 使用的瀏覽器:IE 9,火狐jqgrid不加載所有行

我能夠加載多達1700行,但不是整個2000+的記錄。 沒有錯誤返回請幫我解決這個問題。請指教,如果我錯過了任何低於參考和代碼:

<link href="CSS/jquery-ui-1.9.2.custom.css" rel="stylesheet" type="text/css" /> 
<link href="CSS/ui.jqgrid.css" rel="stylesheet" type="text/css" /> 
<script src="Script/jquery-1.8.3.js" type="text/javascript"></script> 
<script src="Script/jquery-ui-1.9.2.custom.js" type="text/javascript"></script> 
<script src="Script/grid.locale-en.js" type="text/javascript"></script> 
<script src="Script/jquery.jqGrid.min.js" type="text/javascript"></script> 
<script language="javascript" type="text/javascript" > 
    $(function() { 
     $("#dataGrid").jqGrid({ 
      url: 'UploadHistory.aspx/DisplayListToJQGrid', 
      datatype: 'json', 
      mtype: 'POST', 
      serializeGridData: function(postData) { 
       return JSON.stringify(postData); 
      }, 
      ajaxGridOptions: { contentType: "application/json; charset=utf-8" }, 
      colNames: ['Liability', 'Channel_Lvl_2_Desc'], 
      colModel: [ 
          { name: 'Liability', index: 'Liability', width: 300 }, 
          { name: 'Channel_Lvl_2_Desc', index: 'Channel_Lvl_2_Desc', width: 200 }, 
          //{ name: 'T_ADDS', index: 'T_ADDS', width: 200 } 
      ], 
      pager: '#pagingGrid', 
      rowNum: 10, 
      rowList: [10, 20, 100], 
      viewrecords: true, 
      gridview: true, 
      width: 780, 
      rownumbers: true, 
      loadonce: true, 
      jsonReader: { 
       page: function(obj) { return 1; }, 
       total: function(obj) { return 1; }, 
       records: function(obj) { return obj.d.length; }, 
       root: function(obj) { return obj.d; }, 
       repeatitems: false, 
       id: "0" 
      }, 
      caption: 'Data List' 
     }); 
    }); 
</script> 




<WebMethod()> _ 
Public Shared Function DisplayListToJQGrid() As List(Of Dictionary(Of String, Object)) 

    Return UploadClass.LoadListToJQGrid() 

End Function 

<WebMethod()> _ 
Public Shared Function LoadListToJQGrid() As List(Of Dictionary(Of String, Object)) 

    Dim cmdQry As String = "" 

    cmdQry = "SELECT TOP 1970 Liability, Channel_Lvl_2_Desc FROM TABLENAME" 

    Return DataAccessClass.GetListFromDB(cmdQry) 

End Function 


<WebMethod()> _ 
Public Shared Function GetListFromDB(ByVal Sql As String) As List(Of Dictionary(Of String, Object)) 


    Dim dt As New DataTable 

    Dim cmd As New Teradata.Client.Provider.TdCommand(Sql, DBConnectionClass.pTDConobj) 
    Dim da As New TdDataAdapter(cmd) 
    da.Fill(dt) 

    'Dim serializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer 
    Dim rows As New List(Of Dictionary(Of String, Object))() 
    Dim row As Dictionary(Of String, Object) = Nothing 

    For Each dr As DataRow In dt.Rows 
     row = New Dictionary(Of String, Object)() 
     For Each col As DataColumn In dt.Columns 
      row.Add(col.ColumnName.Trim(), dr(col).ToString()) 
     Next 
     rows.Add(row) 
    Next 

    Dim serializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer() 
    serializer.Serialize(rows) 

    Return rows 

End Function 
+0

你能讓javascript易讀嗎? – Rakin

+0

我不認爲這是個好主意。沒有用戶能夠查看100萬個細胞。所以你想發送99,9%不需要的數據給客戶端。您真正需要的是實現數據的面向主題的過濾。網格的性能將主要取決於您使用的Web瀏覽器的JavaScript引擎。無論如何,我相信你必須在服務器端實現分頁,排序和過濾。我認爲在100萬個數據單元的情況下它確實是必需的。 – Rakin

+0

很抱歉,這是我第一次使用本網站。 – EdwinP

回答

1

我想你有純粹的服務器端問題。您使用返回JSON數據的WebMethod。您可以通過在web.config的相應位置添加諸如jsonSerialization maxJsonLength="50000000"/>之類的內容來增加限制。有關更多詳情,請參閱the answer

我建議你另外在jqGrid中包含loadError回調以查看錯誤,例如「使用JSON JavaScriptSerializer進行序列化或反序列化時出錯」,他的字符串長度超過了maxJsonLength屬性設置的值。請參閱the old answer以瞭解使用詳情loadError回撥。

+0

其實我以前在webconfig中包含了maxJasonLength,但不起作用。在返回「GetListFromDB」中的行之前,我也包含了這個,但dioes也不起作用。 '昏暗實例作爲JavaScriptSerializer ' 點心值作爲整數 '值= instance.MaxJsonLength ' 昏暗serializerB作爲新System.Web.Script.Serialization.JavaScriptSerializer() 'serializerB.MaxJsonLength = 2097152 ' serializerB.Serialize(行) – EdwinP

+0

@EdwinP:你得到了什麼錯誤?你是否包含'loadError'?您是否嘗試查看服務器的HTTP響應(使用[Fiddler](http://www.telerik.com/fiddler)或IE/Chrome的開發人員工具)? – Oleg

+0

我已經包含「loadError」並收到HTTP消息體(jqXHR.responseText): – EdwinP