我正在使用jquery-bootgrid位于此处。 http://www.jquery-bootgrid.com/GettingStarted
我创建了一个bootgrid,其中包含其中一个我要编辑的字段,所以我所做的就是在格式化程序中指定它。
formatters:
{
"fieldval": function(column, row)
{
return formatterForFieldval(column, row);
}
}
})
功能。
function formatterForFieldval(column, row)
{
return '<input type="text" class="form-control" id="usr" '
+ 'value="'+row.fieldval+'"'
+ '>' ;
}
现在下一步是保存修改后的数据。
我使用以下脚本来获取用户修改的选定行。
function getSelectedRowsAsJson(tableId)
{
var selectedRowsArray =[];
var selectedRowsJsonArray = "";
var rows = $(tableId).bootgrid("getSelectedRows");
var arrayLength = rows.length;
for (var i = 0; i < arrayLength; i++)
{
var rowsc = $(tableId).bootgrid("getCurrentRows");
var arrayLengthCurrent = rowsc.length;
for (var ii = 0; ii < arrayLengthCurrent; ii++)
{
if(rows[i]===rowsc[ii].id)
{
selectedRowsArray.push(rowsc[ii])
}
}
}
selectedRowsJsonArray = JSON.stringify(selectedRowsArray);
console.log(selectedRowsJsonArray);
return selectedRowsJsonArray;
}
我的问题是var rowsc = $(tableId).bootgrid("getCurrentRows");
未更新为我在文本框中输入的修改数据。在修改文本框之前,它仍显示旧数据(已加载的数据)。
因此,当将数组行发送到数据库时,它会更新为相同的值。
修改文本框后如何更新var rowsc = $(tableId).bootgrid("getCurrentRows");
?或者我做错了吗?
答案 0 :(得分:1)
首先,根据我的经验(撰写本文时),getSelectedRows仅返回所选列的主键。
我已经解决了你的问题。以下是您需要进行的修改: 1.假设您的数据标识符列名是&#34; pkcolumn&#34;:
SELECT tt_name, additional_info, transtypeID, foreign_account, balance
FROM
(
SELECT
tt.tt_name,
tt.additional_info,
trn.transtypeID,
trn.foreign_account,
trn.balance,
row_number()
over (partition by tt.transtypeID, tt.tt_name
order by case when (trn.foreign_account = tt.foreign_account)
or (trn.foreign_account is null and tt.foreign_account is null)
then 1
else 2
end) as rn
FROM ##transtypes tt
JOIN ##transactions trn ON trn.transtypeID = tt.transtypeID
) ranked
WHERE rn = 1;
在上面的代码片段中,我们为每个行输入提供了唯一的id。
2.getSelectedRowsAsJson应该像这样重构:
function formatterForFieldval(column, row)
{
return '<input type="text" class="form-control" id="pk' + row.pkcolumn + '" value="'+ row.fieldval + '">'; //Notice I have prefixed the id with an arbitrary litteral "pk";
}
我希望以上内容可以帮助您解决问题。