2012-09-24 66 views
0

我想在extjs中顯示gridview。該數據從sql db收集。我有一個查詢來獲取來自我的GridViewController()中的SQL數據庫的數據,但我不知道如何將這些數據保存在數組中,然後將其編碼爲JSON並將數據發回。如何使用json和sql將數據導入到EXTJS Grid Panel中

我gridviewcontroller

public string writeRecord() 
    { 

     Response.Write("Survey Completed!"); 
     SqlConnection conn = DBTools.GetDBConnection("ApplicationServices2"); 


     string sqlquery = "SELECT Q1, Q2, Q3, Q4, Improvements, Comments FROM myTable"; 
     SqlDataAdapter cmd = new SqlDataAdapter(sqlquery, conn); 

     DataSet myData = new DataSet(); 
     cmd.Fill(myData, "myTable"); 

     JavaScriptSerializer jss = new JavaScriptSerializer(); 
     string json = jss.Serialize(myData); 

     conn.Open(); 
     conn.Close(); 
     return "{rows: '+ json +'}"; 

    } 

,這是我gridviewApp.js。這是我創建gridview並嘗試從我的gridviewController獲取數據的地方。

var store = Ext.create('Ext.data.JsonStore', { 


     storeId: 'myData', 
     reader: new Ext.data.JsonReader({ 
      fields:[ 
      { name: 'Q1', type: 'int' }, 
      { name: 'Q2', type: 'int' }, 
      { name: 'Q3', type: 'int' }, 
      { name: 'Q4', type: 'int' }, 
      { name: 'Q5', type: 'int' }, 
      { name: 'Improvements', type: 'string' }, 
      { name: 'Comments', type: 'string'}] 
      }), 

      proxy: { 
      type: 'json', 
      url: 'GridView/writeRecord' 
      } 

    }); 
    this.grid = Ext.create('Ext.grid.Panel', { 
     title: 'GridView App', 
     url: 'GridView/writeRecord', 
     //store: store, 
     store: Ext.data.StoreManager.lookup('myData'), 
     columns: [ 
     {header: 'Q1', width: 100, 
     sortable: true, dataIndex: 'Q1'}, 
     { header: 'Q2', width: 100, 
      sortable: true, dataIndex: 'Q2' 
     }, 
     { header: 'Q3', width: 100, 
      sortable: true, dataIndex: 'Q3' 
     }, 
     { header: 'Q4', width: 100, 
      sortable: true, dataIndex: 'Q4' 
     }, 
     { header: 'Improvements', width: 200, 
      sortable: true, dataIndex: 'Improvements' 
     }, 
     { header: 'Comments', width: 200, 
      sortable: true, dataIndex: 'Comments' 
     } 
    ], 
     stripeRows: true, 
     //height:250, 
     width: 800, 
     renderTo: Ext.getBody() 
    }); 

任何一種建議或投入將高度讚賞...謝謝

更新球員:

我得到這個錯誤 在序列化對象時檢測到循環引用類型爲「System.Globalization.CultureInfo」。

當我使用

return Json(myData, JsonRequestBehavior.AllowGet); 

但是我能夠從我的分貝導致當我使用

myData.GetXml(); 

而且這裏的另一個棘手的部分。 我可以使用像

http://localhost:55099/GridView/writeRecord 

直接路徑只能訪問我的分貝的結果,但我gridView.js仍然顯示空白......任何見解?

回答

0

我會使用MVC的內置JSON中的功能是這樣的:

public ActionResult ActionName() 
    { 

     DataSet ds = new DataSet(); 

     // populate ds 

     return Json(ds, JsonRequestBehavior.AllowGet); 

    } 

這將確保您的JSON格式正確出來。

編輯

你的功能應該是這樣的:

public ActionResult writeRecord() 
    { 

     Response.Write("Survey Completed!"); 
     SqlConnection conn = DBTools.GetDBConnection("ApplicationServices2"); 


     string sqlquery = "SELECT Q1, Q2, Q3, Q4, Improvements, Comments FROM myTable"; 
     SqlDataAdapter cmd = new SqlDataAdapter(sqlquery, conn); 

     DataSet myData = new DataSet(); 
     cmd.Fill(myData, "myTable"); 


     conn.Open(); 
     conn.Close(); 

     return Json(myData, JsonRequestBehaviour.AllowGet); 

    } 
+0

謝謝您的輸入道格...在試圖實現一個進入我的writeRecord()...而不是返回{ rows:'+ json +'}返回Json(myData,JsonRequestBehavior.AllowGet);但我得到錯誤說'不能隱式地將類型system.web.mvc.jsonresult轉換爲字符串。 – EagleFox

+0

這是因爲你的writeRecord()函數的返回類型是'string',你想返回一個ActionResult或者JsonResult。 – dougajmcdonald

+0

甜......感謝那照顧了那個錯誤......但是現在我的gridview什麼也沒有顯示...... – EagleFox

相關問題