Dinkin Posted December 20, 2023 Share Posted December 20, 2023 Добрый день. Возможно ли объединить или скрыть ячейки в строке? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 20, 2023 Share Posted December 20, 2023 Добрый день, Аналогичный пост: 1 Quote Link to comment Share on other sites More sharing options...
Dinkin Posted December 20, 2023 Author Share Posted December 20, 2023 Пробовал это вариант, нет результата чет 🙂 Там пишут что не ко всем версиям подходит, возможно к моей "1.90.0.1560" версии тоже не подходит🙂. Или может там для статичных данных, у меня таблица строится по запросам от хранимых процедур. Quote Link to comment Share on other sites More sharing options...
Dinkin Posted December 21, 2023 Author Share Posted December 21, 2023 Спасибо, более менее в итоге получилось. А не подскажете что ни так, пробую скрыть ряд ячеек в строке function beforeInit(sender, config) { // Объединяем ячейки в заголовке config.updatecolSpan = function() { var columns = sender.getColumns(), view = sender.getView(), store = sender.getStore(), colCount = store.getCount(), spanCell = null, spanCount = null; for (var col = 2; col < colCount; ++col) { var cell = view.getCellByPosition({ row: 0, column: col }).dom, record = store.getAt(0), value = record.get(col); Ext.fly(cell).setStyle('display', 'none'); } if (spanCell !== null) { spanCell.colSpan = spanCount; } }; } Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 21, 2023 Share Posted December 21, 2023 Добрый день, А что не получается? Скрины? Quote Link to comment Share on other sites More sharing options...
Dinkin Posted December 21, 2023 Author Share Posted December 21, 2023 Получается только вертикально объединить. А мне только 4 горизонтальных Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 21, 2023 Share Posted December 21, 2023 3 hours ago, Dinkin said: Мне кажется Вам нужен другой подход. Во первых, в этих ячейках, и тип, и данные различные. Во вторых, мне кажется, что лучше использовать группировку, либо хранимые процедуры в самой БД... Quote Link to comment Share on other sites More sharing options...
Dinkin Posted December 21, 2023 Author Share Posted December 21, 2023 Так я и использую хранимые процедуры, мне надо как то визуализировать потребности в таблице, тут ни какие хранимки не помогут, все на стороне верстки делается же. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 21, 2023 Share Posted December 21, 2023 Вы можете "очищать" поля в хранимой процедуре к примеру... Quote Link to comment Share on other sites More sharing options...
Dinkin Posted December 21, 2023 Author Share Posted December 21, 2023 Могу, но в таблице визуально все равно остаются клетки, пустые. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 22, 2023 Share Posted December 22, 2023 15 hours ago, Dinkin said: Могу, но в таблице визуально все равно остаются клетки, пустые. Да, но, думаю чтобы использовать colSpan, мы должны заранее знать "номера" строк, и количество столбцов (начиная с определенной column) которые мы должны объединить. Еще раз позвольте спросить, какую логику используете для объединения ячеек? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 22, 2023 Share Posted December 22, 2023 Если заранее придерживаться некоторой логики... Quote Link to comment Share on other sites More sharing options...
Dinkin Posted December 22, 2023 Author Share Posted December 22, 2023 2 hours ago, Sherzod said: Еще раз позвольте спросить, какую логику используете для объединения ячеек? В заголовке таблице должна быть одна строка "Все проекты". Пробовал сделать группировку, но тогда заголовок становиться не кликабельным. попробовал так, не знаю на сколько это правильно function beforeInit(sender, config) { // Скрываем не использываемые ячейки config.updateRowSpan = function() { var view = sender.getView(); for (var i = 1; i < 7; ++i) { var cell = view.getCellByPosition({ row: 0, column: i }).dom; if (cell != null) Ext.fly(cell).setStyle('display', 'none'); } }; } 1 hour ago, Sherzod said: Если заранее придерживаться некоторой логики... Вы отправляете через процедуру какие то элементы верстки, что скрывают строки? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 22, 2023 Share Posted December 22, 2023 4 minutes ago, Dinkin said: В заголовке таблице должна быть одна строка "Все проекты". Т.е., только одна строка !? Quote Link to comment Share on other sites More sharing options...
Dinkin Posted December 22, 2023 Author Share Posted December 22, 2023 6 minutes ago, Sherzod said: Т.е., только одна строка !? Ага. На фрейме две таблицы, в первой только одна верхняя строка, во второй надо будет как то сделать как у Вас на скрине, думаю там группировкой, только пока не знаю можно ли сделать группировку в DBTreeGrid. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 22, 2023 Share Posted December 22, 2023 1 hour ago, Dinkin said: во второй надо будет как то сделать как у Вас на скрине Примерное решение (Вы можете модифицировать код, чтобы не использовать "константы"). 1. UniDBGrid1.OnDrawColumnCell -> procedure TMainForm.UniDBGrid1DrawColumnCell(Sender: TObject; ACol, ARow: Integer; Column: TUniDBGridColumn; Attribs: TUniCellAttribs); begin //if ARow = 1 then if Column.Field.DataSet.FieldByName('EmpNo').Value < 30 then begin if ACol > 1 then Attribs.Style.Cls := 'hide-column' end; end; 2. UniDBGrid1.ClientEvents.ExtEvents (также нужно модифицировать код) -> function reconfigure(sender, store, columns, oldStore, oldColumns, eOpts) { columns[1].renderer = function (value, metaData, record) { metaData.tdCls = 'span-columns'; metaData.tdAttr = 'colspan='+ columns.length-2 ; return value; }; } 3. UniDBGrid1.LayoutConfig.Cls = adjust-columns 4. CustomCSS -> .adjust-columns .span-columns { width: auto !important; } .adjust-columns .x-grid-item { /* This is pretty key... the framework sets a width of 0 on the table rows, * so this could have some other side effects */ width: 100% !important; } .adjust-columns .hide-column { display: none; } Источник: https://stackoverflow.com/questions/53537437/extjs-grid-colspan-and-row-span Результат: 1 Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 22, 2023 Share Posted December 22, 2023 Ну как, разобрались? Помогло решение? Quote Link to comment Share on other sites More sharing options...
Dinkin Posted December 22, 2023 Author Share Posted December 22, 2023 Почему то не удаляет колонку с прогрессом Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 22, 2023 Share Posted December 22, 2023 А что там, widget? Quote Link to comment Share on other sites More sharing options...
Dinkin Posted December 22, 2023 Author Share Posted December 22, 2023 ага Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 22, 2023 Share Posted December 22, 2023 Позже постараюсь проанализировать. 1 Quote Link to comment Share on other sites More sharing options...
Dinkin Posted December 22, 2023 Author Share Posted December 22, 2023 Спасибо! Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 22, 2023 Share Posted December 22, 2023 Получается, что нужно перенести всю логику на клиентскую часть. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 22, 2023 Share Posted December 22, 2023 1. // if Column.Field.DataSet.FieldByName('EmpNo').Value < 30 then // begin // if ACol > 1 then // Attribs.Style.Cls := 'hide-column' // // end; 2. function reconfigure(sender, store, columns, oldStore, oldColumns, eOpts) { var startCol = 1; //zero based var colCount = columns.length; var fieldIndx = 0; //будет рассматриваться первая колонка var fieldValue = 30; //значение для условия проверки columns[startCol].renderer = function (value, metaData, record) { if (record.data[fieldIndx] < fieldValue) { metaData.tdCls = 'span-columns'; metaData.tdAttr = 'colspan='+ columns.length-2 ; } return value; }; startCol += 1; for (let i = startCol; i < colCount; i++) { if (columns[i].widget) { columns[i].onWidgetAttach = function(column, widget, record) { if (record.data[fieldIndx] < fieldValue) { widget.element.up('td').addCls('hide-column') } } } else { columns[i].renderer = function (value, metaData, record) { if (record.data[fieldIndx] < fieldValue) { metaData.tdCls = 'hide-column'; } return value; } } } } 1 Quote Link to comment Share on other sites More sharing options...
Sherzod Posted December 22, 2023 Share Posted December 22, 2023 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.