0

extjsでグリッドビューを表示しようとしています。そのデータはSQLデータベースから収集されます。GridViewController()のsql dbからデータを取得するクエリがありますが、それらのデータを配列に保存し、JSONとしてエンコードしてデータを送り返す方法がわかりません。

私の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はまだ空白を示しています...何か洞察はありますか?

4

1 に答える 1

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);

    } 
于 2012-09-24T15:53:24.107 に答える