gpt4 book ai didi

javascript - jqgrid dataurl完成事件

转载 作者:行者123 更新时间:2023-11-28 02:35:29 24 4
gpt4 key购买 nike

我正在使用 jQuery 获取零件编号的 vendor 列表。然后,我想在编辑表单出现后加载一些有关 vendor/零件编号组合的额外数据。问题是用于获取 vendor 的 dataurl 方法(我在 beforeInitData 方法中调用)在 beforeShowForm 方法执行之前未完成。因此,当表格首次加载时,我没有 vendor 可供查找。有没有办法在 dataUrl 方法完成后运行该函数以获取额外的数据?

我已经尝试过JQGrid editoptions dataurl not using ajax get?并开始进行,但我知道会有冲突,因为每个请求都会调用 ajaxSelectOptions 方法,有时我的请求来自具有不同要求的不同地方。

这是我用于网格的代码:

jQuery("#receiptPartsTable").jqGrid('editGridRow',"new",
{
height:400,
width:800,
reloadAfterSubmit:false,
recreateForm: true,
beforeInitData: function(form)
{
var selectedPart = rowData.part;
var selectedPartQty = rowData.qty;
//Getting list of suppliers
$("#receiptPartsTable").jqGrid('setColProp', 'supplier', { editoptions:{dataUrl:'getSuppliersForPart.php?part=' + rowData.part} });
},
beforeShowForm: function(form)
{
var selectedPart = rowData.part;
var selectedPartQty = rowData.qty;
$('#part').val(selectedPart);
$('#qty').val(selectedPartQty);

//$('#supplier').val() is not set yet;
var supplier = $('#supplier').val();

//This method is getting called before there is a supplier
getPartDetails(rowData.part, supplier);

//Set up onChange listener. After selecting a supplier, get the part details
$('#supplier').change(function() {
var supplier = $('#supplier').val();
getPartDetails(selectedPart, supplier);
});
}

最佳答案

您没有发布您使用的 jqGrid 的定义。执行上述代码的上下文也不太清楚。您之前是否从当前选定的行中获取了 rowData ?你在哪里定义它?

尽管如此,我认为您的方向是正确的,并且您已经找到了解决问题的正确方法。使用 ajaxSelectOptionscomplete 回调可能是您可以使用的唯一方法。您写了一些“冲突”,但没有发布更多细节。

我建议您检查 complete 回调中 this 的属性。 jqGrid 设置 $.ajax 调用的 context 选项(参见 the line )(与您已经找到的 the answer 完全相同)。因此,您可以在 complete 回调中使用 this.elemthis.optionsthis.vlthis.vl 是单元格中的值(如果编辑现有行)。通常它是要选择的选项的名称。 this.options 具有您可以使用的树重要属性:this.options.dataUrlthis.options.idthis。选项.名称。在表单编辑的情况下,值 this.options.idthis.options.name 相同。在内联编辑的情况下,this.options.id 将包含 rowid 和 _ 以及前缀。它使您可以在使用 dataUrl 的不同选择的 complete 回调中执行不同的代码。

再补充一点。在大多数情况下,您可以从 beforeInitData 中删除对 setColProp 的调用,并使用 the answer 中建议的方法。和 the another one :

ajaxSelectOptions: {
data: {
id: function () {
return $("#receiptPartsTable").getGridParam('selrow');
},
part: function () {
return rowData.part;
}
},
complete: function (jqXHR, textStatus) {
var columName = this.options.name, response = jqXHR.responseText;
...
}
}

您可以仅使用 editoptions: {dataUrl: "getSuppliersForPart.php"} URL 将附加 partid 参数(参见上面的代码)。例如,您可以使用 getRowData 根据当前所选行的 rowid 从其他列获取内容,而不是 id

关于javascript - jqgrid dataurl完成事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13523419/

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