0

如果从数据库返回的值为-1,我不想将数据显示到单元格中。该单元格允许在单元格内编辑。如果返回任何其他值,则应显示。如果我们想再次保存它,该单元格仍应保留其值。为了实现这一点,如果值为-1,我试图将单元格的颜色设置为白色/透明。当价值回到网格时,它就会这样做。但是当我单击该单元格时,它显示-1。所以我从cellClickHandler再次调用它,但没有解决目的。有没有更好的方法使-1时不显示值?或者,如果有人可以指导我在单元格内单击时纠正颜色问题。这是我的代码:

html:        
<kendo-grid-column field="MasterID" width="75">
            <ng-template kendoGridCellTemplate let-dataItem>
                <span class="whole-cell" [style.color]="colorTransparent(dataItem.MasterID)">
                    {{ dataItem.MasterID }}
                </span>
            </ng-template>
        </kendo-grid-column>

//in component
    public colorTransparent(MasterID: number): SafeStyle {
        let result;

        switch (MasterID) {
            case -1:
                result = '#ffffff'; //white
                break;

            default:
                result = '#808080'; //grey
                break;
        }

        return this.sanitizer.bypassSecurityTrustStyle(result);
    }

  //when you click a cell to edit
    public cellClickHandler({ sender, rowIndex, column, columnIndex, dataItem, isEdited }) {
        this.colorTransparent(dataItem.MasterID);

        if (!isEdited && !this.isReadOnly(column.field)) {
            sender.editCell(rowIndex, columnIndex, this.createFormGroup(dataItem));
        }
    }
4

1 回答 1

0

您希望允许用户编辑该特定字段吗?如果没有,那么您可以继续您的设置,并有条件地将类添加"k-grid-ignore-click"到值为 -1 的单元格中。这将阻止用户单击单元格来显示-1值。

有关这方面的更多信息,我会在这里查看 Telerik 文档。

编辑:如果您仍然希望允许用户编辑该字段,我建议设置一个服务来提取数据并对其进行格式化。这样,您就可以将这个特定字段中的任何值映射-1null. 当您将数据保存回数据库时,将所有未更改的值映射null-1

于 2019-04-18T18:13:31.997 回答