gpt4 book ai didi

javascript - 如何使用新数据更新 Bootgrid 选定的行

转载 作者:行者123 更新时间:2023-12-03 04:00:04 24 4
gpt4 key购买 nike

我正在使用 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+'"'
+ '>' ;


}

这有效,它创建了一个我可以在运行时编辑的文本框。 enter image description here

现在下一步是保存修改后的数据。

我使用以下脚本来获取用户修改的选定行。

  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"); ?还是我做错了?

最佳答案

首先,根据我的经验(截至撰写本文时),getSelectedRows 仅返回所选列的主键。

我已经解决了你的问题。以下是您需要进行的修改:1. 假设您的数据标识符列名称是“pkcolumn”:

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";
}

在上面的代码片段中,我们为每一行输入指定了一个唯一的 id。

2.getSelectedRowsAsJson 应该像这样重构:

function getSelectedRowsAsJson()
{
var ids = $('#yourTableId').bootgrid('getSelectedRows'); //Here, remember that getSelectedRows only returns the values of the selected data-identifier columns (meaning, only the values of the selected pkcolumn (in this example) will be returned).

var myDataArray = []; //Create an array that will store the edited objects (key-value pairs)
$(ids).each(function (index, data) {
var editedData = {}; //Create an object to store the selected key-value pairs that have been edited.
editedData.key = data;
editedData.editedValue = $('#pk' + data).val(); //so here we retrieve the value of the input whose id equals "pkxxxx". In your example above, it could be "pk35630", and so on.
myDataArray.push(editedData);
});

//If myDataArray has data then proceed. Otherwise, return
if(myDataArray.length === 0)
return;
//At this point, myDataArray will look like this: [{key: 'pk35630', editedValue: 'blue bla blue'}, {key: 'pk35635', editedValue: 'bla bla bla'}]
//Next, you can use myDataArray to post it through ajax and update your database accordingly, thereafter refresh the bootgrid.

var postdata = JSON.stringify(myDataArray);
$.ajax({
url: your-url,
data: postdata,
type: 'post'
}).done(function (data, textStatus, jqXHR) {
//do your own stuff. for example, refresh/reload the bootgrid.
});
}

希望以上内容能帮助您解决问题。

关于javascript - 如何使用新数据更新 Bootgrid 选定的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44757375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com