Вот моя сетка кендо, я хочу показать поле vendorNo во время экспорта excel, но не на сетку [дубликат]

Для непримитивных функций база R включает в себя функцию, называемую body(), которая возвращает тело функции. Например, источник функции print.Date() можно просмотреть:

body(print.Date)

выдает следующее:

{
    if (is.null(max)) 
        max <- getOption("max.print", 9999L)
    if (max < length(x)) {
        print(format(x[seq_len(max)]), max = max, ...)
        cat(" [ reached getOption(\"max.print\") -- omitted", 
            length(x) - max, "entries ]\n")
    }
    else print(format(x), max = max, ...)
    invisible(x)
}

Если вы работаете в скрипте и хотите, чтобы код функции как символ символа, вы можете получить его.

capture.output(print(body(print.Date)))

доставит вам:

[1] "{"                                                                   
[2] "    if (is.null(max)) "                                              
[3] "        max <- getOption(\"max.print\", 9999L)"                      
[4] "    if (max < length(x)) {"                                          
[5] "        print(format(x[seq_len(max)]), max = max, ...)"              
[6] "        cat(\" [ reached getOption(\\\"max.print\\\") -- omitted\", "
[7] "            length(x) - max, \"entries ]\\n\")"                      
[8] "    }"                                                               
[9] "    else print(format(x), max = max, ...)"                           
[10] "    invisible(x)"                                                    
[11] "}"     

Зачем мне это делать? Я создал пользовательский объект S3 (x, где class(x) = "foo") на основе списка. Один из участников списка (называемый «fun») был функцией, и я хотел print.foo() отобразить исходный код функции с отступом. Таким образом, я получил следующий фрагмент в print.foo():

sourceVector = capture.output(print(body(x[["fun"]])))
cat(paste0("      ", sourceVector, "\n"))

, который отступы и отображает код, связанный с x[["fun"]].

2
задан Pedram 17 July 2016 в 10:43
поделиться

3 ответа

У вас могут быть столбцы в массиве, которые определяют hidden: true, а затем просто проходят через массив столбцов и показывают / скрывают столбцы непосредственно перед экспортом следующим образом:

        function excelExport(e) {
              if (!exportFlag) {
                  for(var i=0; i < columns.length; i++) {
                      if(columns[i].hidden)
                          e.sender.showColumn(i);
                  }
                  e.preventDefault();
                  exportFlag = true;
                  setTimeout(function () {
                    e.sender.saveAsExcel();
                  });
                } else {
                    for(var i=0; i < columns.length; i++) {
                          if(columns[i].hidden)
                              e.sender.hideColumn(i);
                      }
                  exportFlag = false;
                }
      }
1
ответ дан Ankur 18 August 2018 в 09:10
поделиться

Я искал для достижения подобной вещи и использовал ответ, предоставленный @Ankur, с небольшими изменениями, поскольку мне нужно было снова скрыть столбцы после экспорта.

Код выглядит следующим образом:

excelExport(e) {
                Spa.startLoading(); // loading overlay to hide the columns showing then hiding again
                var columns = e.sender.columns;
                var hiddenColumnNumbers = [];
                if (!exportFlag) {
                    for (let i = 0; i < columns.length; i++) {
                        if (columns[i].hidden) {
                            e.sender.showColumn(i);
                            hiddenColumnNumbers.push(i);
                        }
                    }
                    e.preventDefault();
                    exportFlag = true;
                    setTimeout(() => {
                        e.sender.saveAsExcel();
                        for (let j = 0; j < columns.length; j++) {
                            if (hiddenColumnNumbers.indexOf(j) > -1) {
                                e.sender.hideColumn(j);
                            }
                        }
                        Spa.stopLoading(); // hide loading overlay
                    });
                } else {
                    for (let k = 0; k < columns.length; k++) {
                        if (columns[k].hidden)
                            e.sender.hideColumn(k);
                    }
                    exportFlag = false;
                    Spa.stopLoading(); // hide loading overlay
                }
            },
0
ответ дан Jimsan 18 August 2018 в 09:10
поделиться

Вы можете добавить некоторый javascript для управления этим.

var exportFlag = true;

$("#gridName").data("kendoGrid").bind("excelExport", function (e) {
    if (exportFlag) {
        e.sender.showColumn("hiddenColumnName");
        e.preventDefault();
        exportFlag = false;
        e.sender.saveAsExcel();
    } else {
        e.sender.hideColumn("hiddenColumnName");
        exportFlag = true;
    }
});

В основном это ловит событие excelExport, когда вы нажимаете кнопку «Экспорт» и показывает скрытый столбец в своей сетке, прежде чем он запустит saveAsExcel(), которая сохраняет ваш документ. Затем он снова скрывает столбец.

Вот пример , с которым вы можете протестировать.

-1
ответ дан Supersnake 18 August 2018 в 09:10
поделиться
  • 1
    Спасибо за ваш ответ. Первое, что я хочу, чтобы скрытые столбцы были распознаны автоматически (не вручную, поместив их имя!). Постскриптум пример, который вы предоставили, не кажется правильным! – Pedram 18 July 2016 в 10:09
  • 2
    Итак, в основном нам нужен способ прокрутки каждого столбца и посмотреть, является ли свойство hidden true или false. Я сделаю некоторые исследования, чтобы понять, могу ли я это понять. Что не так с этим примером? В сетке есть 3 столбца, а третий столбец скрыт. Когда вы нажимаете кнопку «Экспорт», он показывает скрытый столбец в документе excel. – Supersnake 18 July 2016 в 17:23
  • 3
    Пример не работает, потому что Telerik не поддерживается в Иране! (любая ссылка непосредственно со своего веб-сайта). Я должен был использовать прокси-сервер, чтобы увидеть результат экспорта excel, и теперь он работает. Однако первая проблема все еще существует. Я хочу, чтобы даже скрытые столбцы были автоматически в моем файле excel. – Pedram 19 July 2016 в 06:21
Другие вопросы по тегам:

Похожие вопросы: