Я пытаюсь редактировать ячейку с вводом и выпадающим списком.
Цель состоит в том, чтобы отредактировать, в данном случае, размер диска.
Поэтому мне нужно объединить , editor:"input", editor:true, validator:["min:0", "max:999", "numeric"]}
с , editor:"select", editorParams:{"MB":"MB", "TB":"TB", "GB":"GB"}
Окончательный результат примерно 146 ГБ.
1-я попытка:
Так как это выглядит как пользовательский редактор, я написал это:
var CapacityEditor = function(cell, onRendered, success, cancel, editorParams){
var capacity = document.createElement("div");
capacity.style.width = "100%";
var size = document.createElement("input");
size.setAttribute("type", "text");
size.style.width = "50px";
size.style.textAlign = "right";
onRendered(function(){
size.focus();
//size.style.css = "100%";
});
capacity.append(size);
var multiplier = document.createElement("select");
multiplier.style.width = "45px";
multiplier.append(new Option("MB","MB",true,true));
multiplier.append(new Option("GB","GB"));
multiplier.append(new Option("TB","TB"));
capacity.append(multiplier);
var multi = "MB";
function successFunc(){
success(size.value+multi);
}
function setmultiFunc() {
multi = multiplier.options[multiplier.selectedIndex].text;
successFunc();
}
size.addEventListener("change", successFunc);
size.addEventListener("blur", successFunc);
multiplier.addEventListener("change", successFunc);
multiplier.addEventListener("blur", successFunc);
return capacity;
}
с:
{title:"Capacity", field:"Size", align:"center", width:95, editor:CapacityEditor, sorter:SizeSorter, sortable: true},
Итак, по этому вопросу есть «несколько» вопросов.
- Я понятия не имею, что должен делать успех ()
- Я возвращаю div в надежде, что содержимое заполнит ячейку
- Когда бы я ни вводил значение и делал выбор, он вообще не сохраняется; вероятно, потому что я возвращаю div в первую очередь
2-я попытка: Поскольку редактирование не работает, возможно, я мог бы вместо этого использовать событие щелчка ячейки ...
cell.getElement()
действительно дает мне содержимое DIV для ячейки, как и ожидалось, но такого понятия, как cell.setElement()
, не существует, верно?
Я могу создать свой собственный div, как при первой попытке, а затем использовать cell.setValue()
, чтобы установить значение, но если я не могу отобразить свой div в первую очередь, это не слишком хорошо работает.
Пытался cell.getElement().innerHTML = "<div>...</div>"
, но ничего (вааааа, слишком просто)
3-я попытка: Хорошо, давайте тогда выйдем за рамки (буквально)
Другими словами, давайте создадим очень простой модал, отобразим его поверх существующей ячейки и затем снова используем cell.setValue()
для обновления значения.
Проблема в том, как мне получить положение ячейки?
Используя встроенный редактор, editor:"select"
заменяет div ячейки вводом только для чтения и создает div в теле документа с несколькими div, а затем размещает его прямо под ячейкой, делая его похожим на раскрывающийся список:
<input type="text" readonly="" style="padding: 4px; width: 100%; box-sizing: border-box; height: 100%;">
<div class="tabulator-edit-select-list" style="min-width: 80px; top: 348px; left: 671px;"><div class="tabulator-edit-select-list-item" tabindex="0">10K</div><div class="tabulator-edit-select-list-item" tabindex="0">15K</div><div class="tabulator-edit-select-list-item" tabindex="0">7.2K</div><div class="tabulator-edit-select-list-item active" tabindex="0">na</div></div>
Обратите внимание на атрибуты стиля top
и left
.
Оли может сделать это, поэтому должен быть способ, верно?
Любая помощь, совет, исправление будет высоко ценится.