2

FF firebugウィンドウの場合、これがコールドフュージョンアクションページに渡されていることがわかります。

RowOrder[]=&RowOrder[]=row_5&RowOrder[]=row_2&RowOrder[]=row_1&RowOrder[]=row_3&RowOrder[]=row_4&RowOrder[]=row_6&RowOrder[]=row_7&RowOrder[]=row_8&RowOrder[]=row_11

更新された並べ替え順序を取得するには、これをループする必要がありますが、[]が原因で、問題が発生しています。テーブルを更新できるように、これをループするにはどうすればよいですか?これは簡単な部分だと思っていましたが、明らかに何かが欠けています。

+ jqueryプラグイン(http://www.isocra.com/2008/02/table-drag-and-drop-jquery-plugin/)を使用しています。+

送信されたデータをループするために使用しているコードは次のとおりです。

<cfif StructKeyExists(form, "RowOrder")>
<!---<cfset variables.Order = ReReplaceNoCase(form.RowOrder, "(&){0,1}row_\[\]=", ",", "all") />--->    
<cfset variables.Order = ReplaceNoCase(form["RowOrder[]"],"row_","","all")>
<cfloop from="1" to="#ListLen(variables.Order)#" index="index">
<cfquery name="qryOrder" datasource="#dsn#">
update  SystemTypes
set Order = <cfqueryparam value="#index#" cfsqltype="cf_sql_integer" />
where WETypeNum = <cfqueryparam value="#ListGetAt(variables.Order, index)#" cfsqltype="cf_sql_integer" />
</cfquery>
</cfloop>
</cfif>

+私が使用しているajaxコードは次のとおりです。

$("#RowOrder").tableDnD({
    onDrop: function(table, row) {
        var RowOrderData = $.tableDnD.serialize();
        $.ajax({
            type: 'POST',
            url: '../../ajax/UpdateListingOrder.cfm',
            cache: false,
            data:  RowOrderData
        });
    }   
});

+

+は、質問の投稿後に追加された情報を示します

4

2 に答える 2

1

問題はどのように現れていますか?エラーが発生していますか、クエリが実行されていません.. ?

スコープをダンプして、FORM渡されるフィールドの名前を確認しますか? FORM['RowOrder[]']ではなくのように見えますform.RowOrder。その場合、次を使用する必要があります。

<cfif StructKeyExists(form, "RowOrder[]")>
    <cfset variables.Order = ReReplaceNoCase(form["RowOrder[]"], "(&){0,1}row_\[\]=", ",", "all") />
    ... rest of code ...
<cfelse>
    oops, that variable name does not exist
</cfif>
于 2012-09-26T22:53:08.347 に答える
0

置き換えるのではなく、番号を一致させることはできませんか?

ループ内で正規表現の一致を実行しました。一度に文字列の一部だけに集中できます。

アプローチの例:

<cfif structKeyExists(form, "rowOrder")>
  <cfset data = listToArray(form.rowOrder, "&")/>
  <cfif not arrayIsEmpty(data)>
    <cfloop form="1" to="#arrayLen(data)#" index="index">
      <cfset match = reFind("[1-9][0-9]+", data[index], 1, true)/>
      <cfif arraySum(match)>
        <cfset weTypeNumber = val(mid(data[index], match["pos"], match["len"]))/> 
        <cfquery name="qryOrder" datasource="#dsn#">
         UPDATE
            system_types
          SET 
            order = <cfqueryparam cfsqltype="cf_sql_integer" value="#index#"/>
          WHERE
            we_type_num = <cfqueryparam cfsqltype="cf_sql_integer" value="#weTypeNumber#"/>
        </cfquery>
      </cfif>
    </cfloop>
  </cfif>
</cfif>
于 2012-09-26T23:06:19.537 に答える