diff --git a/src/sql/workbench/contrib/editData/browser/editData.component.ts b/src/sql/workbench/contrib/editData/browser/editData.component.ts index 568cefcdba..c47fd8d48a 100644 --- a/src/sql/workbench/contrib/editData/browser/editData.component.ts +++ b/src/sql/workbench/contrib/editData/browser/editData.component.ts @@ -172,9 +172,16 @@ export class EditDataComponent extends GridParentComponent implements OnInit, On let returnVal = ''; // replace the line breaks with space since the edit text control cannot // render line breaks and strips them, updating the value. - if (Services.DBCellValue.isDBCellValue(value) && !value.isNull) { + /* tslint:disable:no-null-keyword */ + let valueMissing = value === undefined || value === null || (Services.DBCellValue.isDBCellValue(value) && value.isNull); + if (valueMissing) { + /* tslint:disable:no-null-keyword */ + returnVal = null; + } + else if (Services.DBCellValue.isDBCellValue(value)) { returnVal = this.spacefyLinebreaks(value.displayValue); - } else if (typeof value === 'string') { + } + else if (typeof value === 'string') { returnVal = this.spacefyLinebreaks(value); } return returnVal; @@ -366,7 +373,7 @@ export class EditDataComponent extends GridParentComponent implements OnInit, On id: columnIndex, name: escape(c.columnName), field: columnIndex, - formatter: Services.textFormatter, + formatter: this.getColumnFormatter, isEditable: c.isUpdatable }; })) @@ -725,4 +732,29 @@ export class EditDataComponent extends GridParentComponent implements OnInit, On } } + + /*Formatter for Column*/ + private getColumnFormatter(row: number | undefined, cell: any | undefined, value: any, columnDef: any | undefined, dataContext: any | undefined): string { + let valueToDisplay = ''; + let cellClasses = 'grid-cell-value-container'; + /* tslint:disable:no-null-keyword */ + let valueMissing = value === undefined || value === null || (Services.DBCellValue.isDBCellValue(value) && value.isNull); + if (valueMissing) { + valueToDisplay = 'NULL'; + cellClasses += ' missing-value'; + } + else if (Services.DBCellValue.isDBCellValue(value)) { + valueToDisplay = (value.displayValue + '').replace(/&/g, '&').replace(//g, '>'); + valueToDisplay = escape(valueToDisplay.length > 250 ? valueToDisplay.slice(0, 250) + '...' : valueToDisplay); + } + else if (typeof value === 'string' || (value && value.text)) { + if (value.text) { + valueToDisplay = value.text; + } else { + valueToDisplay = value; + } + valueToDisplay = escape(valueToDisplay.length > 250 ? valueToDisplay.slice(0, 250) + '...' : valueToDisplay); + } + return '' + valueToDisplay + ''; + } }