Bootstrap-Table中双击单元格后如何设置值
How to Set Value After Double Clicking Cell in Bootstrap-Table
我有一个 bootstrap-table,我正在尝试对其进行配置,以便当您双击一个单元格时,它会用编辑器替换 html 文本。这部分我很好,只有一个例外。进行更改后,为了根据 bootstrap-table 的文档正确更新该单元格的数据值,我需要指定索引。该文档没有很好地描述在 dbl-click-cell 事件期间返回的行甚至单元格对象,所以我不确定我应该如何获得我需要的值。这是我的代码:
.on('dbl-click-cell.bs.table', function (e, field, value, row, $element) {
EditCellValue(row, $element.closest('td'), row.id, value);
})
这会调用我在单元格中显示编辑器的函数。如果你按下 Enter 键,它会调用我的 API 并更新数据库中的值。完成后,我需要在完成后设置单元格的值:
function EditCellValue(row, cell, id, value) {
$(cell).html('<input type="text" class="form-control qbedit" placeholder="Enter Vendor Name..." value="' + value + '" />');
$(".qbedit").focus();
$(".qbedit").keyup(function (event) {
if (event.keyCode == 13) {
var vendorname = $(".qbedit").val();
// save the edit
$.ajax({
type: 'PUT',
url: '/api/AccountingAPI/' + id,
cache: false,
dataType: 'json',
data: { "": vendorname }
}).error(function (jqXHR, error, errorThrown) {
alert(errorThrown);
}).done(function (res) {
// row.index is nothing. how do I get it????
$('#mappings-table').bootstrapTable('updateCell', { index: row.index, field: 'qbvendor', value: vendorname });
});
}
else if (event.keyCode == 27) {
// cancel the edit
$(cell).html(value);
}
});
}
所以 row.index 属性 什么都不是。我从哪里得到索引?
在筛选 bootstrap-table 的源代码后,没有提及索引。我最终做的是在添加它们时为每一行分配一个索引数据属性,然后我可以从 dbl-click-cell
事件的单元格元素中获取最近的行。这是我添加索引的地方 (请原谅我使用 ASP.NET MVC Razor 的语法):
<tbody>
@{ var idx = 0; }
@foreach (var item in Model)
{
<tr data-itemId="@item.Id" data-index="@idx">
<td>@item.Id</td>
<td>@item.CPRVendor</td>
<td class="qbvendor">@item.QBVendor</td>
<td>@item.Verified</td>
</tr>
idx++;
}
</tbody>
然后,在我的 dbl-click-cell
活动中,我执行以下操作:
$('#mappings-table').on('all.bs.table', function (e, name, args) {
//console.log('Event:', name, ', data:', args);
})
.on('dbl-click-cell.bs.table', function (e, field, value, row, $element) {
EditCellValue($element.closest('tr').data('index'),
$element.closest('td'),
row.id,
value);
})
通过这样做,我现在可以更新单元格的数据值:
$('#mappings-table').bootstrapTable('updateCell', {
index: index,
field: 'qbvendor',
value: vendorname
});
我有一个 bootstrap-table,我正在尝试对其进行配置,以便当您双击一个单元格时,它会用编辑器替换 html 文本。这部分我很好,只有一个例外。进行更改后,为了根据 bootstrap-table 的文档正确更新该单元格的数据值,我需要指定索引。该文档没有很好地描述在 dbl-click-cell 事件期间返回的行甚至单元格对象,所以我不确定我应该如何获得我需要的值。这是我的代码:
.on('dbl-click-cell.bs.table', function (e, field, value, row, $element) {
EditCellValue(row, $element.closest('td'), row.id, value);
})
这会调用我在单元格中显示编辑器的函数。如果你按下 Enter 键,它会调用我的 API 并更新数据库中的值。完成后,我需要在完成后设置单元格的值:
function EditCellValue(row, cell, id, value) {
$(cell).html('<input type="text" class="form-control qbedit" placeholder="Enter Vendor Name..." value="' + value + '" />');
$(".qbedit").focus();
$(".qbedit").keyup(function (event) {
if (event.keyCode == 13) {
var vendorname = $(".qbedit").val();
// save the edit
$.ajax({
type: 'PUT',
url: '/api/AccountingAPI/' + id,
cache: false,
dataType: 'json',
data: { "": vendorname }
}).error(function (jqXHR, error, errorThrown) {
alert(errorThrown);
}).done(function (res) {
// row.index is nothing. how do I get it????
$('#mappings-table').bootstrapTable('updateCell', { index: row.index, field: 'qbvendor', value: vendorname });
});
}
else if (event.keyCode == 27) {
// cancel the edit
$(cell).html(value);
}
});
}
所以 row.index 属性 什么都不是。我从哪里得到索引?
在筛选 bootstrap-table 的源代码后,没有提及索引。我最终做的是在添加它们时为每一行分配一个索引数据属性,然后我可以从 dbl-click-cell
事件的单元格元素中获取最近的行。这是我添加索引的地方 (请原谅我使用 ASP.NET MVC Razor 的语法):
<tbody>
@{ var idx = 0; }
@foreach (var item in Model)
{
<tr data-itemId="@item.Id" data-index="@idx">
<td>@item.Id</td>
<td>@item.CPRVendor</td>
<td class="qbvendor">@item.QBVendor</td>
<td>@item.Verified</td>
</tr>
idx++;
}
</tbody>
然后,在我的 dbl-click-cell
活动中,我执行以下操作:
$('#mappings-table').on('all.bs.table', function (e, name, args) {
//console.log('Event:', name, ', data:', args);
})
.on('dbl-click-cell.bs.table', function (e, field, value, row, $element) {
EditCellValue($element.closest('tr').data('index'),
$element.closest('td'),
row.id,
value);
})
通过这样做,我现在可以更新单元格的数据值:
$('#mappings-table').bootstrapTable('updateCell', {
index: index,
field: 'qbvendor',
value: vendorname
});