我有一個Kendo網格,它使用了Export-to-excel和Export-to-pdf.
。一個特定的列由帶填充零的資料組成(以便列排序作業)。然后,這一列使用一個模板來顯示沒有填充零的資料(一個業務需求)。這對于網格來說是非常完美的。
現在,匯出的資料是由一個模板來顯示的。
現在,匯出函式并不匯出模板,它們匯出的是底層資料(這在已知限制中有所記載)。因此,我的匯出結果顯示了帶有填充零的資料。但是... 我需要顯示沒有填充零的資料。所以我一直在尋找一個變通的辦法。
解決方法嘗試A) 我創建了兩列有填充和無填充的列。我的想法是這樣的。 第i列/資料=有填充;網格視圖=無填充;不匯出。 列ii/資料=非填充;網格視圖=隱藏;匯出。
然而,由于兩個原因,這并不可行。 列i/列:可匯出。{ pdf: false, excel: false }實際上似乎不起作用(!!) 列ii/ 反正這也不合法。如果你在網格中隱藏了資料,那么你無論如何都不能匯出它。
解決方法嘗試B) 在excelExport()函式中,我這樣做了:
excelExport: function (e) {
for (var j = 0; j < e.data.length; j ) {
e.data[j].padded_column = e.data[j].nonpadded_column。
}
},
在控制臺中,這似乎作業正常,即我用非填充列的資料替換填充列的值。然而,這對電子表格上出現的內容沒有任何區別。我的猜測是,這是因為在 excelExport() 修改資料之前,電子表格已經被生成。
因此,我需要一種新的方法。誰能幫幫我?
額外的資訊
為了進一步參考,以下是該列的代碼:列。[{
field: 'sys_id_sorted',
title: 'File ref',
hidden: false,
模板: function (dataItem) {
var ctyClass = '';
switch (dataItem.cty_id) {
case '1':
ctyClass = 'CHAP';
break;
case '2':
ctyClass = 'EU-PILOT';
break;
case '3':
ctyClass = 'NIF';
break;
case '4':
ctyClass = 'OTHER';
break;
默認情況下。
ctyClass = 'default';
break;
}
return '<div class="label標簽-' ctyClass ' origin">' dataItem.sys_id '</div> ' 。
}
},
'sys_id_sorted'是有填充零的欄位。 dataItem.sys_id'是沒有填充零的欄位。
uj5u.com熱心網友回復:
在excelExport事件中,你可以訪問作業簿,因此,你可以如下修改:
在excelExport事件中,你可以訪問作業簿。
var sheet = e.workbook.sheet[0];
for (var i = 1; i < sheet.rows.length; i ) {
var row = sheet.rows[i];
row.cell[0].value = row.cell[0].value.replace(/^0 /, '' )
}
你可以在下面的示例中進行同樣的測驗:
uj5u.com熱心網友回復:
感謝Georgi Yankov為我指明了正確的方向。解決方案是操作在e.workbook中發現的值,而不是e.data。以下是我的解決方案(為簡潔起見而簡化)。回圈內的四個變數只是在操作字串,以創建我的非填充版本。'row.cell[0].value'是原始的零填充字串。資料替換發生在最后一行:
excelExport: function (e) {
var sheet = e.workbook.sheet[0];
for (var k = 1; k < sheet.rows.length; k ) {
var row = sheet.rows[k];
var sys_id_sorted = row.cell[0].value;
var caseNum = sys_id_sorted.substring(9);
var caseNumTrimmed = caseNum.replace(/^0 /, '');
row.cell[0].value = sys_id_sorted.substring(0,9) caseNumTrimmed;
}
},
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/329850.html
標籤:
