cellTemplate causes row height increasing

Posted by: hoang.nguyen on 8 December 2017, 3:44 pm EST

    • Post Options:
    • Link

    Posted 8 December 2017, 3:44 pm EST

    I have a flexGrid with cellTemplate on it. The problem is when adding cellTemplate, rowHeight is also increasing. I have tried to use no padding on cells to reduce cell height but it does not help much.

    This is my HTML:

    <wj-flex-grid
          #flexLoans
          class="cell-padding"
          [allowAddNew]="false"
          [allowDelete]="false"
          [selectionMode]="2"
          [autoGenerateColumns]="false"
          [headersVisibility]="1"
          [itemsSource]="selectedLoans"
          [showMarquee]="true"
          [keyActionTab]="3"
          (cellEditEnded)="loansChanged(flexLoans, $event)"
          (keydown)="keyDown($event)"
          (beginningEdit)="beginningEdit(flexLoans, $event)"
          (selectionChanging)="selectionChanging(flexLoans, $event)"
          (formatItem)="formatItem(flexLoans, $event)"
          >
    
          <wj-flex-grid-column
            [binding]="'teamMemberLoanId'"
            [visible]="false"
            >
          </wj-flex-grid-column>
    
          <wj-flex-grid-column
            [dataMap]="loansMap"
            [showDropDown]="true"
            [header]="'Loan to Business Unit'"
            [binding]="'businessUnitID'"
            [width]="'150*'"
            >
          </wj-flex-grid-column>
    
          <wj-flex-grid-column
            [header]="'From Date'"
            [binding]="'fromDate'"
            [width]="'50*'"
            >
            <ng-template wjFlexGridCellTemplate
              [cellType]="'Cell'"
              let-cell="cell">
              <wj-input-date
                [inputType]="date"
                [format]="'MM/dd/yyyy'"
                [(value)]="cell.item.fromDate"
                [min]="cell.item.fromDate < minDate && cell.item.fromDate !== null ? cell.item.fromDate : minDate"
                [mask]="'00/00/0000'"
                [isRequired]="false"
                [isDisabled]="lockRow(cell.item.teamMemberID)"
                (initialized)="fromDateInitialized()"
                (valueChanged)="updateFromDate(cell.item)">
              </wj-input-date>
            </ng-template>
          </wj-flex-grid-column>
    
          <wj-flex-grid-column
            [header]="'To Date'"
            [binding]="'toDate'"
            [width]="'50*'"
            >
            <ng-template wjFlexGridCellTemplate
              [cellType]="'Cell'"
              let-cell="cell">
              <wj-input-date
                [inputType]="date"
                [format]="'MM/dd/yyyy'"
                [(value)]="cell.item.toDate"
                [min]="cell.item.fromDate ? cell.item.fromDate : minDate"
                [mask]="'00/00/0000'"
                [isRequired]="false"
                [isDisabled]="lockRow(cell.item.teamMemberID)"
                (initialized)="toDateInitialized()"
                (valueChanged)="updateToDate(cell.item)">
              </wj-input-date>
            </ng-template>
          </wj-flex-grid-column>
    
          <wj-flex-grid-column
            [header]="'Comments'"
            [binding]="'comments'"
            [width]="'200*'"
            >
          </wj-flex-grid-column>
    
          <wj-flex-grid-column
            [header]="'Delete'"
            [allowSorting]="false"
            [width]="75"
            [align]="'center'"
            [isReadOnly]="true"
            >
            <ng-template wjFlexGridCellTemplate
              [cellType]="'Cell'"
              let-item="item">
              <button
                ion-button icon-only clear small
                [disabled]="lockRow(item.teamMemberID)"
                (click)="removeLoan($event, item.teamMemberLoanId, flexLoans)">
                <ion-icon name="trash"></ion-icon>
              </button>
            </ng-template>
          </wj-flex-grid-column>
    
        </wj-flex-grid>
    

    my css:

    .cell-padding .wj-cell {
        padding-top: 0px !important;
        padding-right: 0px !important;
        padding-bottom: 0px !important;
        padding-left: 5px !important;
      }
    

    and here is my out put:

    1. with padding set to 0px
    2. not set padding, use default
    3. no cell template

    as you can see, the with space of cell-grid-editor is always much shorter then cell height. How can I set it to match with cell height or recude cell height to match with cell-grid-editor? Thank you very much.

  • Posted 11 December 2017, 3:30 am EST

    Hi Hoang,

    You may prevent this by setting autoSizeRows to false. Please refer to the updated code snippet:

     <wj-flex-grid-column
            [header]="'Delete'"
            [allowSorting]="false"
            [width]="75"
            [align]="'center'"
            [isReadOnly]="true"
            >
            <ng-template wjFlexGridCellTemplate
    	  [autoSizeRows]="false"
              [cellType]="'Cell'"
              let-item="item">
              <button
                ion-button icon-only clear small
                [disabled]="lockRow(item.teamMemberID)"
                (click)="removeLoan($event, item.teamMemberLoanId, flexLoans)">
                <ion-icon name="trash"></ion-icon>
              </button>
            </ng-template>
          </wj-flex-grid-column>
    

    ~Manish

  • Posted 11 December 2017, 11:37 am EST

    Thank you Manish

  • Posted 11 December 2017, 12:24 pm EST

    I have just tried your suggestion and it does not work sir? any other thing I can try?

    <wj-flex-grid
          #flexLoans
          class="cell-padding"
          [allowAddNew]="false"
          [allowDelete]="false"
          [selectionMode]="2"
          [autoGenerateColumns]="false"
          [headersVisibility]="1"
          [itemsSource]="selectedLoans"
          [showMarquee]="true"
          [keyActionTab]="3"
          (cellEditEnded)="loansChanged(flexLoans, $event)"
          (keydown)="keyDown($event)"
          (beginningEdit)="beginningEdit(flexLoans, $event)"
          (selectionChanging)="selectionChanging(flexLoans, $event)"
          (formatItem)="formatItem(flexLoans, $event)"
          >
    
          <wj-flex-grid-column
            [binding]="'teamMemberLoanId'"
            [visible]="false"
            >
          </wj-flex-grid-column>
    
          <wj-flex-grid-column
            [dataMap]="loansMap"
            [showDropDown]="true"
            [header]="'Loan to Business Unit'"
            [binding]="'businessUnitID'"
            [width]="'150*'"
            >
          </wj-flex-grid-column>
    
          <wj-flex-grid-column
            [header]="'From Date'"
            [binding]="'fromDate'"
            [width]="'50*'"
            >
            <ng-template wjFlexGridCellTemplate
              [autoSizeRows]="true"
              [cellType]="'Cell'"
              let-cell="cell">
              <wj-input-date
                [inputType]="date"
                [format]="'MM/dd/yyyy'"
                [(value)]="cell.item.fromDate"
                [min]="cell.item.fromDate < minDate && cell.item.fromDate !== null ? cell.item.fromDate : minDate"
                [mask]="'00/00/0000'"
                [isRequired]="false"
                [isDisabled]="lockRow(cell.item.teamMemberID)"
                (initialized)="fromDateInitialized()"
                (valueChanged)="updateFromDate(cell.item)">
              </wj-input-date>
            </ng-template>
          </wj-flex-grid-column>
    
          <wj-flex-grid-column
            [header]="'To Date'"
            [binding]="'toDate'"
            [width]="'50*'"
            >
            <ng-template wjFlexGridCellTemplate
              [autoSizeRows]="true"
              [cellType]="'Cell'"
              let-cell="cell">
              <wj-input-date
                [inputType]="date"
                [format]="'MM/dd/yyyy'"
                [(value)]="cell.item.toDate"
                [min]="cell.item.fromDate ? cell.item.fromDate : minDate"
                [mask]="'00/00/0000'"
                [isRequired]="false"
                [isDisabled]="lockRow(cell.item.teamMemberID)"
                (initialized)="toDateInitialized()"
                (valueChanged)="updateToDate(cell.item)">
              </wj-input-date>
            </ng-template>
          </wj-flex-grid-column>
    
          <wj-flex-grid-column
            [header]="'Comments'"
            [binding]="'comments'"
            [width]="'200*'"
            >
          </wj-flex-grid-column>
    
          <wj-flex-grid-column
            [header]="'Delete'"
            [allowSorting]="false"
            [width]="75"
            [align]="'center'"
            [isReadOnly]="true"
            >
            <ng-template wjFlexGridCellTemplate
              [autoSizeRows]="true"
              [cellType]="'Cell'"
              let-item="item">
              <button
                ion-button icon-only clear small
                [disabled]="lockRow(item.teamMemberID)"
                (click)="removeLoan($event, item.teamMemberLoanId, flexLoans)">
                <ion-icon name="trash"></ion-icon>
              </button>
            </ng-template>
          </wj-flex-grid-column>
    
        </wj-flex-grid>
    
  • Posted 11 December 2017, 12:31 pm EST

    If I modify the css to force cell height to 28px, it set cells height correctly but the selected cell blue window does not fit with the cell get selected. it still remain the original cell selected cell height

  • Posted 11 December 2017, 12:32 pm EST

    .cell-padding .wj-cell {
        padding-top: 0px !important;
        padding-right: 0px !important;
        padding-bottom: 0px !important;
        padding-left: 5px !important;
        height: 28px !important;
      }
    
  • Posted 11 December 2017, 12:35 pm EST

    I was tewsting with both autoSizeRows equals either true or false, same result.

    <wj-flex-grid
          #flexLoans
          class="cell-padding"
          [allowAddNew]="false"
          [allowDelete]="false"
          [selectionMode]="2"
          [autoGenerateColumns]="false"
          [headersVisibility]="1"
          [itemsSource]="selectedLoans"
          [showMarquee]="true"
          [keyActionTab]="3"
          (cellEditEnded)="loansChanged(flexLoans, $event)"
          (keydown)="keyDown($event)"
          (beginningEdit)="beginningEdit(flexLoans, $event)"
          (selectionChanging)="selectionChanging(flexLoans, $event)"
          (formatItem)="formatItem(flexLoans, $event)"
          >
    
          <wj-flex-grid-column
            [binding]="'teamMemberLoanId'"
            [visible]="false"
            >
          </wj-flex-grid-column>
    
          <wj-flex-grid-column
            [dataMap]="loansMap"
            [showDropDown]="true"
            [header]="'Loan to Business Unit'"
            [binding]="'businessUnitID'"
            [width]="'150*'"
            >
          </wj-flex-grid-column>
    
          <wj-flex-grid-column
            [header]="'From Date'"
            [binding]="'fromDate'"
            [width]="'50*'"
            >
            <ng-template wjFlexGridCellTemplate
              [autoSizeRows]="false"
              [cellType]="'Cell'"
              let-cell="cell">
              <wj-input-date
                [inputType]="date"
                [format]="'MM/dd/yyyy'"
                [(value)]="cell.item.fromDate"
                [min]="cell.item.fromDate < minDate && cell.item.fromDate !== null ? cell.item.fromDate : minDate"
                [mask]="'00/00/0000'"
                [isRequired]="false"
                [isDisabled]="lockRow(cell.item.teamMemberID)"
                (initialized)="fromDateInitialized()"
                (valueChanged)="updateFromDate(cell.item)">
              </wj-input-date>
            </ng-template>
          </wj-flex-grid-column>
    
          <wj-flex-grid-column
            [header]="'To Date'"
            [binding]="'toDate'"
            [width]="'50*'"
            >
            <ng-template wjFlexGridCellTemplate
              [autoSizeRows]="false"
              [cellType]="'Cell'"
              let-cell="cell">
              <wj-input-date
                [inputType]="date"
                [format]="'MM/dd/yyyy'"
                [(value)]="cell.item.toDate"
                [min]="cell.item.fromDate ? cell.item.fromDate : minDate"
                [mask]="'00/00/0000'"
                [isRequired]="false"
                [isDisabled]="lockRow(cell.item.teamMemberID)"
                (initialized)="toDateInitialized()"
                (valueChanged)="updateToDate(cell.item)">
              </wj-input-date>
            </ng-template>
          </wj-flex-grid-column>
    
          <wj-flex-grid-column
            [header]="'Comments'"
            [binding]="'comments'"
            [width]="'200*'"
            >
          </wj-flex-grid-column>
    
          <wj-flex-grid-column
            [header]="'Delete'"
            [allowSorting]="false"
            [width]="75"
            [align]="'center'"
            [isReadOnly]="true"
            >
            <ng-template wjFlexGridCellTemplate
              [autoSizeRows]="false"
              [cellType]="'Cell'"
              let-item="item">
              <button
                ion-button icon-only clear small
                [disabled]="lockRow(item.teamMemberID)"
                (click)="removeLoan($event, item.teamMemberLoanId, flexLoans)">
                <ion-icon name="trash"></ion-icon>
              </button>
            </ng-template>
          </wj-flex-grid-column>
    
        </wj-flex-grid>
    
  • Posted 12 December 2017, 4:10 am EST

    Hi Hoang,

    We are sorry, we are unable to replicate the issue at our end with autoSizeRows to false and build 5.20173.380.

    Please refer to the attached sample for the same.

    ~ManishFlexGrid_wjFlexGridCellTemplate_autoSizeRows.zip

Need extra support?

Upgrade your support plan and get personal unlimited phone support with our customer engagement team

Learn More

Forum Channels