2011-03-22 1 views
0

私はどのブラウザでもSmart GWT 2.3.0を使用しています。スマートGWTはリストグリッドのIDを更新しません

私はデータだけで単純なリストグリッドを持っています。そして、私が新しい登録を作成するとき、私のIDを更新しません。

私はそれについてfaq problemを読んでいます。私はすべてが正しいと思います。

データ・ソースのコードがある:

DataSource ds = null; 
    try { 
     ds = new DataSource(); 
     ds.setDataURL("do"); 
     ds.setController(controller); 

     DataSourceTextField nombre = new DataSourceTextField("nombre", 
      "Nombre", 50, true); 
     DataSourceTextField codigo = new DataSourceTextField("codigo", 
      "Código", 50, true); 
     DataSourceTextField id = new DataSourceTextField("id", 
      "Identificador", 50); 
     id.setPrimaryKey(Boolean.TRUE); 
     id.setCanEdit(Boolean.FALSE); 

     ds.setFields(id, codigo, nombre); 

コンソール結果は次のとおりで

16:43:29.808:KPR3:DEBUG:gridEdit:isc_ListGrid_1:showing 

インラインエディタ:3,2は、焦点を当てる: 真 16:43: 31.385:KPR5:情報:gridEdit:isc_ListGrid_1:cellEditEnd: 終了編集、完了イベント: 入力 16:43:31.386:KPR5:DEBUG:gridEdit:isc_Li stGrid_1:変更 検出:newValues:{codigo: "PRUEBA"、 ノンブル: "Prueba"}、oldValues:43: 16はundef 31.390:KPR5:DEBUG:gridEdit:isc_ListGrid_1: フィールドで:バリを適用codigo。 【 {タイプ: "isString"、 typeCastValidator:真は、 は_generated:真、 defaultErrorMessage: "文字列である必要があります。"}、 {タイプ: "必須"、 defaultErrorMessage:「フィールドがある: にErrorMessage、undefがPRUEBA 16:43:31.390:KPR5:情報:gridEdit:isc_ListGrid_1:validateFieldValue、 newValue: "PRUEBA"、合格: resultingValue、真:ヌル 16:43:31.392:KPR5:DEBUG:gridEdit:isc_ListGrid_1: フィールドで:ノンブル印加バリ:[ {タイプ: "isString"、 typeCastValidator:真が、 は_generated:真、 defaultErrorMessage : "文字列でなければなりません"}、 {タイプ: "必須"、 defaultErrorMessage: "フィールドが必要とされる"} ]値:Prueba 16:43:31.393:KPR5:INFO:gridEdit にErrorMessage、undefを:newValue: "Prueba"、検証に合格: true、resultsValue:null 16:43:31.393:KPR5:情報:gridEdit:isc_ListGrid_1:を保存していますnewValues '{codigo: "PRUEBA"、 ノンブル: "Prueba"}' 16:43:31.996は:XRP3:DEBUG:ResultSetの:(: isc_ListGrid_1によって作成された):isc_ResultSet_1 データソースデータ 変更 午後4時43発射:31.997:XRP3:INFO:ResultSet:isc_XDataSource_3:dsResponse が正常に動作するために が更新レコード[s]を返しませんでした。 提出された要求データを使用して ResultSetキャッシュを更新しています。 16:43:31.997:XRP3:DEBUG:のResultSet:isc_XDataSource_3:キャッシュに統合することに提出 データ:[ {codigo: "PRUEBA"、 ノンブル: "Prueba"} ] 16:43:31.997: XRP3:INFO:ResultSet:isc_ResultSet_1 (作成者:isc_ListGrid_1):操作後に キャッシュを更新します。タイプ: add、allMatchingRowsCached true:43:31997:XRP3:INFO:のResultSet:isc_ResultSet_1 (作成者:isc_ListGrid_1):更新 キャッシュ: [ {codigo: "PRUEBA"、 ノンブルOPERATIONTYPE 1行が データを更新し、 'isc_ListGrid_1' によって を提出した '追加' "Prueba"} ] 16:43:31.998:XRP3:INFO:のResultSet:(作成者:isc_ListGrid_1):isc_ResultSet_1 ローカル フィルタが適用される:{ } 16時43:4 4のレコードが マッチドフィルタ。 31.999:XRP3:INFO:ResultSet:isc_XDataSource_3:dsResponse が正常に動作するために が更新レコード[s]を返しませんでした。 提出された要求データを使用して ResultSetキャッシュを更新しています。 16:43:31.999:XRP3:DEBUG:のResultSet:isc_XDataSource_3:キャッシュに統合することに提出 データ:[ {codigo: "PRUEBA"、 ノンブル: "Prueba"} ] 16:43:32.004: RDQ5:DEBUG:ResultSetの:isc_ResultSet_1 (作成者: isc_ListGrid_1):getRange(0、3)キャッシュ

から満足

私はそれが挿入で同じことを起こると言うのを忘れて申し訳ありませんが、これは、インサートのログです:

13:22:09.162:KPR3:DEBUG:gridEdit:isc_ListGrid_0:change detection: newValues: {codigo: "prueba", 
nombre: "prueba"}, oldValues: undef 
13:22:09.167:KPR3:DEBUG:gridEdit:isc_ListGrid_0:At field: codigo applying validators: [ 
{type: "isString", 
typeCastValidator: true, 
_generated: true, 
defaultErrorMessage: "Debe ser una Cadena."}, 
{type: "required", 
defaultErrorMessage: undef, 
errorMessage: "Campo es obligatorio"} 
] to value:prueba 
13:22:09.168:KPR3:INFO:gridEdit:isc_ListGrid_0:validateFieldValue, newValue: "prueba", passed validation: true, resultingValue: null 
13:22:09.170:KPR3:DEBUG:gridEdit:isc_ListGrid_0:At field: nombre applying validators: [ 
{type: "isString", 
typeCastValidator: true, 
_generated: true, 
defaultErrorMessage: "Debe ser una Cadena."}, 
{type: "required", 
defaultErrorMessage: undef, 
errorMessage: "Campo es obligatorio"} 
] to value:prueba 
13:22:09.172:KPR3:INFO:gridEdit:isc_ListGrid_0:validateFieldValue, newValue: "prueba", passed validation: true, resultingValue: null 
13:22:09.172:KPR3:INFO:gridEdit:isc_ListGrid_0:Saving newValues '{codigo: "prueba", 
nombre: "prueba"}' 
13:22:10.612:XRP7:DEBUG:ResultSet:isc_ResultSet_0 (created by: isc_ListGrid_0):dataSource data changed firing 
13:22:10.612:XRP7:INFO:ResultSet:isc_XDataSource_1:dsResponse for successful operation of type add did not return updated record[s]. Using submitted request data to update ResultSet cache. 
13:22:10.612:XRP7:DEBUG:ResultSet:isc_XDataSource_1:Submitted data to be integrated into the cache:[ 
{codigo: "prueba", 
nombre: "prueba"} 
] 
13:22:10.613:XRP7:INFO:ResultSet:isc_ResultSet_0 (created by: isc_ListGrid_0):updating cache in place after operationType: add, allMatchingRowsCached true 
13:22:10.613:XRP7:INFO:ResultSet:isc_ResultSet_0 (created by: isc_ListGrid_0):Updating cache: operationType 'add' submitted by 'isc_ListGrid_0',1 rows update data: 
[ 
{codigo: "prueba", 
nombre: "prueba"} 
] 
13:22:10.614:XRP7:INFO:ResultSet:isc_ResultSet_0 (created by: isc_ListGrid_0):Local filter applied: 3 of 3 records matched filter:{ 
} 
13:22:10.615:XRP7:INFO:ResultSet:isc_XDataSource_1:dsResponse for successful operation of type add did not return updated record[s]. Using submitted request data to update ResultSet cache. 
13:22:10.615:XRP7:DEBUG:ResultSet:isc_XDataSource_1:Submitted data to be integrated into the cache:[ 
{codigo: "prueba", 
nombre: "prueba"} 
] 
13:22:10.627:RDQ9:DEBUG:ResultSet:isc_ResultSet_0 (created by: isc_ListGrid_0):getRange(0, 2) satisfied from cache 
input: { 
    "__requestBody": { 
     "dataSource": "isc_XDataSource_1", 
     "operationType": "add", 
     "data": { 
      "nombre": "prueba", 
      "codigo": "prueba" 
     }, 
     "componentId": "isc_ListGrid_0", 
     "oldValues": null 
    }, 
    "inputfields": [ 
     { 
      "value": "prueba", 
      "property": "nombre" 
     }, 
     { 
      "value": "prueba", 
      "property": "codigo" 
     } 
    ], 
    "__requestFormat": "smartgwt", 
    "__httpSession": "[email protected]", 
    "__http_request": "[email protected]", 
    "fields": [ 
     { 
      "name": "id", 
      "property": "id" 
     }, 
     { 
      "name": "codigo", 
      "property": "codigo" 
     }, 
     { 
      "name": "nombre", 
      "property": "nombre" 
     } 
    ] 
} 

そして、これは、更新レジスタの私の応答です:これは、新しいレジスタを追加するために、応答としての私のサーバーJSONを送信するものである

{ 
    "id": "1", 
    "__requestBody": { 
     "dataSource": "isc_XDataSource_2", 
     "operationType": "update", 
     "data": { 
      "nombre": "prueba2", 
      "id": "1" 
     }, 
     "componentId": "isc_ListGrid_0", 
     "oldValues": { 
      "id": "1", 
      "codigo": "prueba", 
      "nombre": "prueba" 
     } 
    }, 
    "inputfields": [ 
     { 
      "value": "prueba2", 
      "property": "nombre" 
     }, 
     { 
      "value": "1", 
      "property": "id" 
     } 
    ], 
    "__requestFormat": "smartgwt", 
    "__httpSession": "[email protected]", 
    "__http_request": "[email protected]", 
    "fields": [ 
     { 
      "name": "id", 
      "property": "id" 
     }, 
     { 
      "name": "codigo", 
      "property": "codigo" 
     }, 
     { 
      "name": "nombre", 
      "property": "nombre" 
     } 
    ] 
} 
+0

サーバーからのあなたの応答がどのように見えるかは分かります。あなたはその情報であなたの投稿を更新していただけますか? SmartGWTはあなたのためのIDを作成しません、あなたはそれらを自分で提供する必要があります。 Side-note:レスポンスがJSON形式の場合は、データソースのDataFormatをJSONに設定する必要があります。 –

+0

私はjson server-sendで更新しました。 – user670852

答えて

0

あなたが(アップデートで主キーを変更することはできませんSQLと同じように)。削除してから追加します。

+0

それを追加することは同じことです! id値は表示されません!お返事をありがとうございます! – user670852

0

ログが間違っている正確に何を言っている:

16:43:31.999:XRP3:INFO:ResultSetの:isc_XDataSource_3:タイプのアドオンが正常に動作するためdsResponseは、更新されたレコード[S]を返しませんでした。要求された要求データを使用してResultSetキャッシュを更新する

あなたのJSONレスポンスは基本的にランダムなデータですが、SmartGWTは形式や意味について何も宣言していないため、何をするべきかわかりません。 SmartGWTは送信されたデータを更新データとして使用し、送信されたデータには明らかにサーバーで生成した新しいID値が含まれていません。

「クイックスタートガイド」の「データ統合」の章から始めて、すべてのリンクを参照して参照してください。簡単に言えば、DataSource宣言はSmartGWTに応答の処理方法を指示します。ちょうど使用することができるフォーマット(RestDataSource)があります。また、既存のフォーマットをSmartGWTで解析するためにrecordXPathなどのプロパティを宣言することもできます。

関連する問題