在展开/折叠项目后更新treetable内的已编辑单元格

时间:2016-02-15 15:48:03

标签: css sapui5 treetable

我有一个带有可扩展行中可编辑单元格的treeTable。编辑后的可编辑单元格会变脏(在示例中背景颜色设置为红色)。

我遇到的问题是我发现在扩展/崩溃时没有找到更新脏标志的确定方法(已编辑的单元格获得了css类' edited-cell')。

目前代码看起来像这样:

// each editable textfield gets a Listener
textField.attachLiveChange(
   var source = oEvent.oSource;
   ...
   jQuery('#' + source.getId()).addClass(EDITED_CELL_CLASS, false)
   // list with cell ids, e.g. "__field1-col1-row1"
   DIRTY_MODELS.push(model.getId()) //*** add also binding context of row
)

// the table rows are updated on toggleOpenState
new sap.ui.table.TreeTable({
   toggleOpenState: function(oEvent) {
      ...
      this.updateRows() // see function below
   }
})

// update Rows function is also delegated
oTable.addDelegate({ onAfterRendering : jQuery.proxy(this.updateRows, oTable)});

//http://stackoverflow.com/questions/23683627/access-row-for-styling-in-sap-ui5-template-handler-using-jquery
// this method is called on each expand/collapse: here i can make sure that the whole row has it's correct styling...
// but how to make sure that special cells are dirty?
function updateRows(oEvent) {
  if (oEvent.type !== 'AfterRendering'){
    this.onvscroll(oEvent);
  }
  var rows = this.getVisibleRowCount();
  var rowStart = this.getFirstVisibleRow();
  var actualRow;
  for (var i = 0; i < rows; i++){
    actualRow = this.getContextByIndex(rowStart + i); //content
    var row = this.getRows()[i]
    var obj = actualRow.getObject()
    var rowId = row.getId()
    updateStyleOfRows(obj, rowId, actualRow)
    updateDirtyCells(rowId) //*** how to get the binding context in this function???
  }
};

// update Dirty Cells in function updateRows():
function updateDirtyCells(rowId){
   for (var i = 0; i < DIRTY_MODELS.length; i++){
      var dirtyCellId = DIRTY_MODELS[i]
//*** make sure that only the correct expanded/collapsed rows will be updated -> depends on the bindingContext of the row
      jQuery('#' + rowId).find('#' + dirtyCellId + '.editable-cell').addClass(EDITED_CELL_CLASS, false)
   }
}

这不能正常工作,因为单元格的id会在每个布局渲染上发生变化(例如,折叠/展开行)。请参阅附图。 如果我应该提供更多信息,请告诉我。

enter image description here

0 个答案:

没有答案