使用formatDisplayField我有3列(訂單類型,訂單號,賬單號),我的分組通過,我使用formatDisplayField一個鏈接/按鈕添加到如此,點擊後打開一個上下文菜單,將每一組文本允許我的用戶將子組添加到該組。我需要傳遞與該組有關的直接行數據。現在我正在做一些有趣的事情,數據不夠具體。在分組
實施例:
用戶點擊的組ordertype
,並得到一個上下文菜單,表示Add PO Number
,它們可以再加入一個PO數量和該組頭他們獲得了上下文菜單說Add Billing Id
。用戶還可以添加一個賬單ID而不需要添加一個賬號,這很重要,因爲這是我的數據變得不可靠的地方。比方說電網的樣子:
OrderGroupType: Direct
PONumber: 12345
BillingId: abc
OrderGroupType: Direct
BillingId: abc
我似乎無法弄清楚如何獲取與當前組這樣做,我從網格中的所有數據的數據行,然後通過它可以搜索和只返回等於我的組名行,然後我把這些信息納入一個數據屬性,我拉出的信息在上下文菜單:
groupText: ['Group Type: <b>{0} - {1} Item(s)</b>',
'PO Number: <b>{0} - {1} Item(s)</b>',
'Bill To: <b>{0} - {1} Item(s)</b>'
],
formatDisplayField: [
function (ordgrpTypVal) {
//all rowData
var allRowData = $(this).jqGrid("getGridParam", "data");
//this row data
var rowData = $.grep(allRowData, function (v) {
return v.OrderGroupType == grpTypVal;
});
var elementId = "groupType_" + grpTypVal.replace(/\s+/g, '') + "_" + i++;
var newElement = '<span id="' + elementId + '" data-rowdata=\'' + JSON.stringify(rowData).replace(/'/g, "\\'") +'\' class="groupTypeMenu" style="cursor: pointer; color: blue;">' + grpTypVal + '</span>';
return newElement;
}
]
我去的地方錯的是我,然後在這兩個函數formatDisplayField
財產,我也設置鏈接/按鈕到兒童組:
formatDisplayField: [
function (grpTypVal) {
//all rowData
var allRowData = $(this).jqGrid("getGridParam", "data");
//this row data
var rowData = $.grep(allRowData, function (v) {
return v.OrderGroupType == grpTypVal;
});
var elementId = "groupType_" + grpTypVal.replace(/\s+/g, '') + "_" + i++;
var newElement = '<span id="' + elementId + '" data-rowdata=\'' + JSON.stringify(rowData).replace(/'/g, "\\'") +'\' class="groupTypeMenu" style="cursor: pointer; color: blue;">' + grpTypVal + '</span>';
return newElement;
},
function (poVal) {
if (poVal !== null) {
//all rowData
var allRowData = $(this).jqGrid("getGridParam", "data");
//this row data
var rowData = $.grep(allRowData, function (v) {
return v.PoNumber == poVal;
});
var elementId = "PoNum_" + poVal.replace(/\s+/g, '') + "_" + i++;
var newElement = '<span id="' + elementId + '" data-rowdata=\'' + JSON.stringify(rowData).replace(/'/g, "\\'") + '\' class="poMenu" style="cursor: pointer; color: blue;">' + poVal + '</span>';
return newElement;
}
else
return null;
},
function (billToVal, val, props, index, obj) {
if (billToVal !== null) {
//all rowData
var allRowData = $(this).jqGrid("getGridParam", "data");
//this row data
var rowData = $.grep(allRowData, function (v) {
return v.BillToId == billToVal;
});
var elementId = "BillTo_" + billToVal.replace(/\s+/g, '') + "_" + i++;
var newElement = '<span id="' + elementId + '" data-rowdata=\'' + JSON.stringify(rowData).replace(/'/g, "\\'") + '\' class="billToMenu" style="cursor: pointer; color: blue;">' + billToVal + '</span>';
return newElement;
}
else
return null;
}
]
這打破了,當我有了與同一結算ID父訂單數量計費ID。如果我有兩個在兩個不同順序組中完全相同的po數字,它也可能會崩潰。
所以我的問題是我怎樣才能更可靠地獲得有關組的數據?我更喜歡我只得到與特定組有關的rowData。我可以看到這種事情發生,如果我能得到更多的數據,也許是這樣的:
formatDisplayField: [
function (billToVal, val, props, index, obj) {
if (billToVal !== null) {
//all rowData
var allRowData = $(this).jqGrid("getGridParam", "data");
//this row data
var rowData = $.grep(allRowData, function (v) {
return v.BillToId == billToVal **&& v.PoNumber == obj.PoNumber && v.OrderGroupType == obj.OrderGroupType;**
});
var elementId = "BillTo_" + billToVal.replace(/\s+/g, '') + "_" + i++;
var newElement = '<span id="' + elementId + '" data-rowdata=\'' + JSON.stringify(rowData).replace(/'/g, "\\'") + '\' class="billToMenu" style="cursor: pointer; color: blue;">' + billToVal + '</span>';
return newElement;
}
else
return null;
}
]
下小提琴說明我的問題;看看它的工作單擊手冊,並選擇編輯,你會看到但是,它詳細介紹手冊橙色行,如果你對1
點擊DSPO
下,點擊編輯,你會看到它的顏色都具有的1
計費ID的行而不僅僅是您選擇的行組......要編輯的行應爲橙色。 JSFIDDLE
任何幫助將是驚人的,我已經嘗試了很多不同的事情,數據是不可靠的。謝謝!
我想弄清楚如何使這項工作作爲一個整體與我的其他代碼,我已經從組格式化程序中刪除rowData獲取,並且我試圖從您創建的$ tr變量中獲取所需的一切。我將這些行標記爲我的用戶的可視化對象,然後我將這些數據發送到服務器,如果可以解決我的問題,我會盡快通知您。 – Blindsyde
@Noctane:你的代碼的主要部分將被執行**在點擊分組標題後創建的上下文菜單**中。 '$ tr'表示被點擊分組頭的'
我覺得我按照我需要的方式工作,我添加了刪除,將'mark()'分隔爲函數,並且清理了'formatDisplayField'函數,請您檢查一下以確保它有效嗎? https://jsfiddle.net/y3llowjack3t/bj70cfsx/ – Blindsyde
相關問題