0

私はextjsを使用していくつかのサービスプランを表示するプロジェクトに取り組んでいます。私は最初にそれを投入することができます。次に、グリッドに新しいデータを入力するボタンonclickが必要です。ツリーサービスの関数を正常に呼び出すことができますが、データが表示されません。私のtreegridボタンコードは次のとおりです。

{
                xtype: 'button',
                text: 'Search',
                listeners: {
                    click: function () {
                      //  Ext.getCmp('tree').getView().refresh();
                        Ext.Ajax.request({
                            method: 'GET',
                            extend: 'Ext.data.Model',
                            fields: ['planid', 'id', 'text', 'startdate', 'enddate', 'iconCls', 'expanded', 'leaf'],
                            params: {
                                serviceplanid: serviceplanid,
                                userid: userid,
                                // startdate: startdate,
                                // stopdate: stopdate,
                                initialstate: initialstate,
                                fonttype: fonttype,
                                fonttypeex: fonttypeex
                            },
                            url : '/BloomMatrix2/TreeService2.svc/getfulldata',
        reader: new Ext.ux.aspNetJsonReader({ root: 'children'
        }),

        success: function (response) {
                                //console.log(response);
                                //swapStrore();
                            }
                        });
                    }                       
                }
            },

そして私のサービスは関数を読み取ります:

[WebGet()]
[OperationContract]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public string getdata(String serviceplanid,String userid, String initialstate,String fonttype, String fonttypeex)
 {

    System.Diagnostics.Debug.WriteLine("IN GETDATA"+initialstate);
    SqlConnection Conn = new SqlConnection(CommonFunctions.GetConnectionString("YourConnection"));
    Conn.Open();

    SqlCommand cmd = new SqlCommand("[dbo].[VMResults_GetCategoriesTree]", Conn);
    cmd.Parameters.Add("@UserId", SqlDbType.BigInt).Value = 1;
    cmd.Parameters.Add("@ServicePlanCurrent", SqlDbType.Char).Value = "N";

    cmd.CommandType = CommandType.StoredProcedure;
    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    DataSet ds1 = new DataSet();
    adapter.Fill(ds1);
    String ret=makeJSON(ds1,initialstate,fonttype,fonttypeex);
    return ret;
}

[WebGet()]
[OperationContract]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string getfulldata(String serviceplanid, String userid, String initialstate, String fonttype, String fonttypeex)
{

    System.Diagnostics.Debug.WriteLine("IN GETDATA" + initialstate);
    SqlConnection Conn = new SqlConnection(CommonFunctions.GetConnectionString("YourConnection"));
    Conn.Open();

    SqlCommand cmd = new SqlCommand("[dbo].[VMResults_GetCategoriesTree]", Conn);
    cmd.Parameters.Add("@UserId", SqlDbType.BigInt).Value = 1;
    cmd.Parameters.Add("@ServicePlanCurrent", SqlDbType.Char).Value = "Y";

    cmd.CommandType = CommandType.StoredProcedure;
    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    adapter.Fill(ds);
    String ret = makeJSON(ds, initialstate, fonttype, fonttypeex);
    return ret;
}

ボタンをクリックして後者に電話する必要があります。よろしくお願いします。

4

1 に答える 1

0

サーバーと通信するプロキシを使用して、ツリーにストア定義が必要です。Sencha の例を参照してください。

または、コードにあるように独自の AJAX リクエストを実行する場合は、成功ブロックで手動で解析されたデータからNodeInterfaceオブジェクトを作成し、それらをツリー パネルに 1 つずつ追加する必要があります。

于 2012-12-04T21:45:22.050 に答える