0

グリッド テーブル フィールド リストの json 文字列を作成する必要があり、それらを Java バックエンドに送信する必要があります。

私は送らなければなりません

id,
name,
listOfProjects,

listOfProjects には次のリストが含まれます。このリストには多数のアイテムが含まれる場合があります。

prjId,
prjName

json 文字列の作成方法を教えてください。

次のコードサンプルで試しました

var dataStr = new Object();

dataStr.id=myId;

dataStr.name="myName";

dataStr.plist = new Array();

dataStr.plist[0].prjId=1stId;
dataStr.plist[0].prjName="1stName";

dataStr.plist[1].prjId=2ndId;
dataStr.plist[1].prjName="2ndName";

dataStr.plist[2].prjId=3rdId;
dataStr.plist[2].prjName="3rdName";

var data = Ext.JSON.encode(dataStr);

Ext.Ajax.request({
    url : '/E2EAT/authentication/userdetails.json',
    method : "GET",
    headers: {
        'Content-Type': 'application/json'
    },
    params : 'data=' +  data ,
    useDefaultXhrHeader : false,
    withCredentials: true,
});

上記のコードを使用できますが、グリッドを反復する必要があります

1. 煎茶でグリッドを反復する方法を教えてください。

2. json文字列を作成してバックエンドに送信する最良の方法は何ですか?

4

1 に答える 1

1

Ext.eachExt は、 とExt.iteratefor オブジェクトの2 つのループ関数を提供します。

グリッドの列を反復するには、インスタンスExt.grid.Panel#columnsを含む配列プロパティを使用できます。Columnsたとえば、表示可能な列のリストを作成するには、次のようにします。

var visibleColumns = [];
Ext.each(grid.columns, function(column) {
    // Only columns bound to a field (exludes actions colutions, etc.)
    if (!Ext.isEmpty(column.dataIndex)) {
        if (column.isVisible()) {
            visibleColumns.push({
                field: column.dataIndex
                ,label: column.text
            });
        }
    }
});

グリッドには、基になるストアのすべてのフィールドの列が必ずしもあるとは限りません。また、カスタム レンダリング、アクション、番号付け、選択などのために追加の列を含めることができます。グリッド列の。この場合、Ext.data.Fieldオブジェクトを使用して作業します。

// Get a ref to the store's model. Stores always have models; even
// if none is specified explicitly, one is created implicitly.
var model = grid.getStore().model;

var fieldNames = [];
Ext.each(model.getFields(), function(field) {
    fieldNames.push(field.name);
});

最後に、 を使用してデータを JSON に変換しますExt.encode。また、URL クエリ (パラメーター) を自分で作成する必要はありません。これにより、いくつかのパラメーターを追加する必要があるコードの他の部分により多くの柔軟性がもたらされます。

Ext.Ajax.request({
    ...
    params: {
        data: Ext.encode(rawData)
    }
});

POST リクエストの場合、jsonDataプロパティを使用して、json エンコーディングを保存することもできます。

Ext.Ajax.request({
    ...
    jsonData: {
        data: rawData
    }
});

ただし、多くの場合、直接の AJAX 要求よりも、適切に構成されたデータ プロキシライターを備えたストアを使用する方が望ましいでしょう。

于 2013-07-18T15:34:54.670 に答える