2015-06-10 62 views
0

我寫了一個代碼爲jqGrid,但我不能獲得數據到我的jqGrid。jqGrid不加載data.The網格顯示,但數據不顯示在它

$(document).ready(function() { 
    jQuery("#jqgrid").jqGrid({ 
     url:"/VendorDetailList.ashx", 
     dataType: "json", 
     data: "{}", 
     height: 'auto', 
     postData: { 
      Entity: function() { 
       return 'vendor'; 
      } 
     }, 
     colNames: ['vendorrep_id','vendor_id','Name', 'Phone Number', 'Job Title', 'Email','Entity'], 
     colModel: [{ 
      name: 'vendorrep_id', 
      index: 'vendorrep_id', 
      key: true, 
      search:false, 
      hidden: true, 
      editable: true, 
      editrules: { edithidden: false, readonly: true }, 
      search:false 
     }, 
     { 
      name: 'vendor_id', 
      index: 'vendor_id', 
      key: true, 
      search:false, 
      hidden: true, 
      editable: true, 
      editrules: { edithidden: false, readonly: true }, 
      search:false 
     }, 
     { 
      name: 'name', 
      index: 'name', 
      editable: true, 
      editrules: {required:true} 
     }, { 
      name: 'phone', 
      index: 'phone', 
      editable: true 
     }, { 
      name: 'jobtitle', 
      index: 'jobtitle', 
      editable: true 
     }, { 
      name: 'email', 
      index: 'email', 
      editable: true 
     }, 
     { 
      name: 'Entity', hidden: true, editable: true, editrules: { edithidden: false }, formatter: function() { 
       return 'Vendor'; 
      }, 
     } 
     ], 
     data: JSON.parse(result), 
     rowNum: 10, 
     mtype: 'POST', 
     loadonce: true, 
     rowList: [10, 20, 30], 
     pager: '#pjqgrid', 
     sortname: 'CompanyName', 
     multiselect: true, 
     multipleSearch:true, 
     autowidth: true, 
     height: 'auto', 
     scrollOffset: 0, 
     shrinkToFit: true, 
     //toppager: true, 
     cloneToTop: true, 
     ignoreCase: true, 
     viewrecords: true, 

     gridview: true, 
     sortorder: 'asc', 
     caption: "Vendor Rep", 
     editurl: '/VendorDetailList.ashx' 
    }); 
}); 

HTTP處理程序代碼是在這裏:

public class VendorList : IHttpHandler, IReadOnlySessionState 
{ 
    string MethodName = string.Empty; 
    string CallBackMethodName = string.Empty; 
    object Parameter = string.Empty; 
    DbVendor _DbVendor = new DbVendor(); 
    public void ProcessRequest(HttpContext context) 
    { 

     context.Response.ContentType = "application/json"; 
     MethodName = context.Request.Params["oper"]; 
     Parameter = context.Request.Params; 
     CallBackMethodName = context.Request.Params["callbackmethod"]; 
     switch (MethodName) 
     { 
      case null: 
       context.Response.Write(GetVendor()); 
       break; 
      case "getbyid": 
       context.Response.Write(GetById()); 
       break; 
      case "add": 
       context.Response.Write(Insert(context)); 
       break; 
      case "edit": 
       context.Response.Write(Update(context)); 
       break; 
      case "del": 
       context.Response.Write(Delete(context)); 
       break; 
     } 
    } 

    public string GetVendor() 
    { 

     JsonResponse _response = new JsonResponse(); 
     System.Web.Script.Serialization.JavaScriptSerializer jSearializer = 
         new System.Web.Script.Serialization.JavaScriptSerializer(); 
     try 
     { 


      System.Collections.Generic.List<vendor> _Vendor = _DbVendor.GetVendorDetails(); 
      _response.IsSucess = true; 
      _response.Message = string.Empty; 
      _response.CallBack = CallBackMethodName; 
      _response.ResponseData = _Vendor; 
     } 
     catch (Exception ex) 
     { 
      _response.Message = ex.Message; 
      _response.IsSucess = false; 
     } 
     return jSearializer.Serialize(_response); 
    } 

getVendorDetails()功能是在這裏:

SqlConnection _con = new SqlConnection(ConfigurationManager.ConnectionStrings["junaidcrmConnectionString"].ConnectionString); 

    public List<VendorRep> GetVendorDetails() 
    { 
     try 
     { 
      List<VendorRep> _lstVendor = new List<VendorRep>(); 
      VendorRep _Vendor = null; 
      if (_con.State != System.Data.ConnectionState.Open) 
       _con.Open(); 
      SqlCommand _cmd = _con.CreateCommand(); 
      _cmd.CommandText = "Select * From vendorrep"; 
      SqlDataReader _Reader = _cmd.ExecuteReader(); 

      while (_Reader.Read()) 
      { 

       _Vendor = new VendorRep(); 
       _Vendor.vendor_id = Convert.ToInt32(_Reader["vendor_id"]); 
       _Vendor.name = _Reader["name"].ToString(); 
       _Vendor.phone = _Reader["phone"].ToString(); 
       _Vendor.email = _Reader["email"].ToString(); 
       _Vendor.jobtitle = _Reader["jobtitle"].ToString(); 
       _Vendor.vendorrep_id =Convert.ToInt32(_Reader["adress"].ToString()); 

       _lstVendor.Add(_Vendor); 

      } 
      return _lstVendor; 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
     finally 
     { 
      if (_con.State != System.Data.ConnectionState.Closed) 
       _con.Close(); 
     } 
    } 
+0

你可能想讓你的返回數據賈森,而不是javascriptserlialized(不知道,因爲我不知道什麼javascriptserializer不完全),因爲你的ajax請求期待返回json數據 –

回答

0

代碼中最重要的錯誤是使用dataType: "json"而不是datatype: "json"。像data: JSON.parse(result),這樣的選項需要在未定義result的情況下被移除。您不能將key: true屬性更多地作爲一列。我建議您在代碼中也包含loadError回調(請參閱the answer)。

+0

@AazanAbeer:不客氣!如果問題得到解決,您應該[「接受」](http://meta.stackexchange.com/a/5235/147495)答案。 – Oleg

+0

我伸出我的問題限制,因爲他們新在這裏,我不知道如何提問的實際方式。如果我們在一個頁面上有一個JqGrid,並且在點擊其中一個顏色後,我們轉到下一頁,如{name:'name',index:'name',editable:true,formatter:'showlink',formatoptions: {baseLinkUrl:'vendorDetail.aspx'},editrules:{required:true}} ...............在下一頁他們是另一個JqGrid現在我想訪問coloumn值先前的JqGrid在下一頁中..如果你有一些想法,請好心幫助我 –

+0

@AazanAbeer:有很多方法來實現這個場景。 1)不要將代碼分成兩頁。如果需要,您可以隱藏不需要的部分(您可以將其放置在可以隱藏/顯示的外部div中)。這是最簡單的方法。 2)你可以在'localStorage'中設置Cookie或更好的信息。唯一的限制:兩個URL必須來自同一個網站。 3)你可以添加URL參數到第二頁提供的信息返回。我敢肯定,人們可以爲同樣的問題提出更多的解決方案。 – Oleg

0

您可以嘗試改變這些:

jQuery("#jqgrid").jqGrid({ 
     url:"/VendorDetailList.ashx", 
     mType: "json", // change to mtype and remove data:"{}" as you are using postData. 
     height: 'auto', 
     postData: { 
      Entity: function() { 
       return 'vendor'; 
      } 
     }, 

url:"/VendorDetailList.ashx", FR om這個網址返回一個有效的json然後你的jqgrid將被填充。

+0

我做了同樣的你說mType :'json'並刪除數據:「{}」但仍然我的jqgrid不填充 –