У меня есть ряд строк таблицы, таких как:
<cfloop query="qryPlayer">
(...snip...)
<input data-playerid="#PlayerID#" name="PlayerSort" value="#PlayerSort#">
(...snip...)
</cfloop>
В нижней части формы у меня есть одно поле:
<input type="hidden" name="PlayerIDs"> <!--- Populated by js --->
Всякий раз, когда пользователь изменяет значениев любой строке я заполняю PlayerID списком первичных ключей, связанных с полями, которые необходимо обновить:
$('input[name=PlayerSort]').change(function() {
$('input[name=Save]').show();
var arrPlayerID = [];
$('input[name=PlayerSort]').each(function() {
if ($(this).val()) {
arrPlayerID.push($(this).data('playerid'));
}
});
$('input[name=PlayerIDs]').val(arrPlayerID.join(','));
});
Затем, когда пользователь нажимает кнопку Сохранить, я обновляю все поля, имеющие значенияв них.
Q: Это то, что мне нужно делать?Это работает, но я забыл какой-то фундаментальный способ обработки отправки формы?
Кстати, клиент не хочет, чтобы он был AJAXified, потому что он хочет дать пользователю возможность нажать reset и начать заново.,Итак, введите набор значений, нажмите «Сохранить», и ColdFusion обновит все значения PlayerSort, связанные с form.PlayerIDs.
<cfloop list="#form.PlayerIDs#" index="local.PlayerID">
<cfset local.Index = local.Index + 1>
UPDATE dbo.Player SET
PlayerSort = <cfqueryparam cfsqltype="cf_sql_integer" value="#ListGetAt(form.PlayerSort,local.Index)#">
WHERE PlayerID = <cfqueryparam cfsqltype="cf_sql_integer" value="#local.PlayerID#">;
</cfloop>