2014-10-06 120 views
1

我曾看過在所有相關的答案中發揮過的建議,但無濟於事。我嘗試了各種選擇,但再次無濟於事。我正在使用ASP.NET與C#作爲處理語言,並使用作爲數據庫引擎的Oracle 10gJSON數據在JQGrid中不顯示

這裏是我的.aspx文件:

<form id="LocalizationSearch" name="locSearch" defaultbutton="updateButton" runat="server"> 
    <script language="javascript" type="text/javascript"> 
    jQuery(document).ready(function() { 
     var createLanguageList = function() { 
      $("#list").jqGrid({ 
       url: "KPHandler.ashx?langname=English", 
       datatype: "json", 
       contentType: "application/json; charset=utf-8", 
       mtype: 'POST', 
       //datatype: "local", 
       //data: mydata, 
       autowidth: true, 
       height: 150, 
       colNames: ['DelLanguageID', 'DocRecID', 'LanguageID', 'DocPartNumber,', 'NewLanguage', 'ConcentraIDLang', 'ActFromTranslation'], 
       colModel: [ 
        { name: 'DelLanguageID', index: 'DelLanguageID', width: 65, editable: false }, 
        { name: 'DocRecID', index: 'DocRecID', width: 65, editable: false }, 
        { name: 'LanguageID', index: 'LanguageID', width: 65, editable: false }, 
        { name: 'DocPartNmbr', index: 'DocPartNmbr', width: 65, editable: true }, 
        { name: 'NewLanguage', index: 'NewLanguage', editable: true, edittype: 'checkbox', editoptions: { value: "1:0"} }, 
        { name: 'ConcentraIDLang', index: 'ConcentraIDLang', width: 65, editable: true }, 
        { name: 'ActFromTranslation', index: 'ActFromTranslation', width: 120, editable: true } 
       ], 
       rowNum: 5, 
       rowList: [10, 20, 30], 
       pager: '#pager', 
       sortname: 'DelLanguageID', 
       viewrecords: true, 
       //altRows: true, 
       //sortorder: "desc", 
       caption: "Deliverable Languages", 
       //height: "100%", 
       loadonce: true, 
       gridview: true, 
       autoencode: true, 
       loadError: function (jqXHR, textStatus, errorThrown) { 
        alert('Error: ' + textStatus + errorThrown + jqXHR.responseText); 
       } 
      }); // JQGrid 
     }; // Create function 

     $("#btnLanguages").click(function() { 
      createLanguageList(); 
     }); 

    }); // document ready 

</script> 

    <table cellspacing="1" cellpadding="0" width="100%"> 
     <tr> 
      <td valign="top"> 
       <table id="list"></table> 
       <div id="pager"></div> 
     </td> 
     </tr> 
    </table> 
    <input type="button" id="btnLanguages" value="Work With Languages" /> 

</form> 

,這裏是我的C#代碼,構建JSON對象:我

<%@ WebHandler Language="C#" Class="KPHandler" %> 

using System; 
using System.Web; 
using System.Web.Script.Serialization; 
using System.Web.Configuration; 
using System.Text; 
using System.Data; 
using System.Collections.Generic; 
using System.Configuration; 
using System.Data.OracleClient; 

public class KPHandler : IHttpHandler 
{ 
    private DKCL.ReportDK Rpt = new DKCL.ReportDK(); 

    public void ProcessRequest(HttpContext context) 
    { 
     context.Response.ContentType = "application/json"; 
     System.Collections.Specialized.NameValueCollection forms = context.Request.Form; 
     string strOperation = forms.Get("oper"); 

     switch (strOperation) 
     { 
      case null: // means this is the first time load 
       string strSQL = "SELECT DelLanguageID, DocRecID, LanguageID, DocPartNmbr, NewLanguage, " + 
           "ConcentraIDLang, ActFromTranslation FROM DELLANGUAGES WHERE DOCRECID = 18787"; 

       DataTable dlLanguages = Rpt.GetDataTable(strSQL); 

       context.Response.Write(GetJson(dlLanguages)); 

       break; 
      default: 
       break; 
     } // End Switch 

    } 

    // This is generic function that converts DataTable into JSON object. 
    public string GetJson(DataTable dt) 
    { 
     System.Web.Script.Serialization.JavaScriptSerializer serializer = new 

     System.Web.Script.Serialization.JavaScriptSerializer(); 
     List<Dictionary<string, object>> rows = 
      new List<Dictionary<string, object>>(); 
     Dictionary<string, object> row = null; 

     foreach (DataRow dr in dt.Rows) 
     { 
      row = new Dictionary<string, object>(); 
      foreach (DataColumn col in dt.Columns) 
      { 
       row.Add(col.ColumnName.Trim(), dr[col]); 
      } 
      rows.Add(row); 
     } 
     return serializer.Serialize(rows); 
    } 

    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 

} 

,這裏是由上面的代碼返回的JSON數據(其實得到這個如圖Fiddler2),和我自己的調試代碼:

  [{"DELLANGUAGEID":"4613","DOCRECID":"18787","LANGUAGEID":"12","DOCPARTNMBR":null,"NEWLANGUAGE":0,"CONCENTRAIDLANG":"c02609839","ACTFROMTRANSLATION":null},{"DELLANGUAGEID":"4614","DOCRECID":"18787","LANGUAGEID":"34","DOCPARTNMBR":null,"NEWLANGUAGE":0,"CONCENTRAIDLANG":null,"ACTFROMTRANSLATION":null},{"DELLANGUAGEID":"4615","DOCRECID":"18787","LANGUAGEID":"1","DOCPARTNMBR":null,"NEWLANGUAGE":0,"CONCENTRAIDLANG":"c02606925","ACTFROMTRANSLATION":null},{"DELLANGUAGEID":"4616","DOCRECID":"18787","LANGUAGEID":"13","DOCPARTNMBR":null,"NEWLANGUAGE":0,"CONCENTRAIDLANG":"c02609850","ACTFROMTRANSLATION":null},{"DELLANGUAGEID":"4617","DOCRECID":"18787","LANGUAGEID":"11","DOCPARTNMBR":null,"NEWLANGUAGE":0,"CONCENTRAIDLANG":"c02606924","ACTFROMTRANSLATION":null},{"DELLANGUAGEID":"4618","DOCRECID":"18787","LANGUAGEID":"3","DOCPARTNMBR":null,"NEWLANGUAGE":0,"CONCENTRAIDLANG":"c02606920","ACTFROMTRANSLATION":null},{"DELLANGUAGEID":"4619","DOCRECID":"18787","LANGUAGEID":"21","DOCPARTNMBR":null,"NEWLANGUAGE":0,"CONCENTRAIDLANG":null,"ACTFROMTRANSLATION":null},{"DELLANGUAGEID":"39703","DOCRECID":"18787","LANGUAGEID":"142","DOCPARTNMBR":"593957-001","NEWLANGUAGE":0,"CONCENTRAIDLANG":null,"ACTFROMTRANSLATION":null},{"DELLANGUAGEID":"89446","DOCRECID":"18787","LANGUAGEID":"161","DOCPARTNMBR":null,"NEWLANGUAGE":0,"CONCENTRAIDLANG":null,"ACTFROMTRANSLATION":null},{"DELLANGUAGEID":"97174","DOCRECID":"18787","LANGUAGEID":"162","DOCPARTNMBR":null,"NEWLANGUAGE":0,"CONCENTRAIDLANG":null,"ACTFROMTRANSLATION":null},{"DELLANGUAGEID":"112630","DOCRECID":"18787","LANGUAGEID":"164","DOCPARTNMBR":null,"NEWLANGUAGE":0,"CONCENTRAIDLANG":null,"ACTFROMTRANSLATION":null},{"DELLANGUAGEID":"104902","DOCRECID":"18787","LANGUAGEID":"163","DOCPARTNMBR":null,"NEWLANGUAGE":0,"CONCENTRAIDLANG":null,"ACTFROMTRANSLATION":null}] 

任何想法,可能是印度政府恩錯了嗎? 網格顯示正確的記錄數和頁面中的頁面。任何幫助將不勝感激。
順便說一下,我嘗試了GET vs POST,json vs jsonstring等以及許多其他選項,包括JSON Reader,但沒有運氣。

+0

這是不完全清楚你在問什麼。你是否說網格顯示的行數等於返回的數據量,但不是實際的數據值? – Strake 2014-10-06 21:23:44

回答

0

colModel index屬性旨在精確反映JSON結果中的鍵。見documentation

指數:傳遞給在其上的數據進行排序的服務器的名稱(注意,我們可以通過列數字代替)。通常這是數據庫的名字(或名字) - 這是服務器端的排序,所以你傳遞什麼取決於你的服務器希望接收什麼。

鑑於此信息,它看起來像您的示例中的索引是不正確的。嘗試糾正它們到適當的情況或使用數字值。

例子:

colModel: [{ name: 'DelLanguageID', index: 'DELLANGUAGEID', width: 65, editable: false },... 
+0

@Kishor另外在這裏訪問這個例子,看看發生了什麼http://jsfiddle.net/wt5ea1jz/ – Strake 2014-10-07 15:13:10

+0

謝謝Strake,這是一個神奇的工具! – Kishor 2014-10-09 22:31:39

0

謝謝邊條。這對我來說很痛苦,但頗具教育意義。現在只需更改** ColModel **即可使用。再次感謝。

+0

很高興我能幫到你。如果它對你有幫助,請將我的帖子標記爲答案。 – Strake 2014-10-07 15:11:16