KeiStory

BlazorDatasheet 에서 특정 값인 경우 배경색 변경하기

 

Cell 에 특정 값이 있는 경우 배경색을 변경하는 방법을 알아봅니다.

배경색을 변경하기 위해서는 Format 을 직접 설정하여 변경이 가능합니다.

하지만 ConditionalFormat 을 등록해 놓으면 자동으로 배경색 처리가 가능해 집니다.

/// <summary>
/// 특정 문자열에 따른 배경색 변경
/// </summary>
public class ColorConditionalFormat : ConditionalFormatAbstractBase
{
    /// <summary>
    /// 특정 문자열
    /// </summary>
    private readonly string? TargetText;

    /// <summary>
    /// ColorConditionalFormat
    /// </summary>
    /// <param name="targetText"></param>
    public ColorConditionalFormat(string targetText)
    {
        TargetText = targetText;
    }

    /// <summary>
    /// 값에 따라 배경색 변경된 Format 을 반환합니다.
    /// </summary>
    /// <param name="row"></param>
    /// <param name="col"></param>
    /// <param name="sheet"></param>
    /// <returns></returns>
    public override CellFormat? CalculateFormat(int row, int col, Sheet sheet)
    {
        var cell = sheet.Cells.GetCell(row, col);
        var value = cell.GetValue<string>();

        if (value == null)
            return null;

        if (value.ToUpper() == TargetText.ToUpper())
        {
            var changeFormat = cell.Format.Clone();
            changeFormat.BackgroundColor = "lightgreen";
            return changeFormat;
        }
        else
        {
            return null;
        }
    }
}

위 코드를 보면 알수 있듯이 TargetText 과 값이 같으면 기존 format 을 clone 하여 배경색을 변경 후 반환합니다.

기존 format 을 clone 하는 이유는 기존에 설정된 format 을 유지 하기 위함입니다.

아래처럼 화면에서 사용합니다.

var colorConditionalFormat = new ColorConditionalFormat("Laptop");
sheet.ConditionalFormats.Apply(new ColumnRegion(1), colorConditionalFormat);

 

결과

Laptop 인 경우 배경색이 변경된걸 확인할 수 있습니다.

728x90
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band