! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

Cell 의 내용을 지웠을때 기본적으로 넣어지는 값을 지정할 수 있을까요? > Q&A | 토론

본문 바로가기

Spread.NET

Q&A | 토론

WinForms윈폼 Cell 의 내용을 지웠을때 기본적으로 넣어지는 값을 지정할 수 있을까요?

페이지 정보

작성자 iroon 작성일 2023-08-17 15:59 조회 523회 댓글 0건
제품 버전 : Spread.net 16
컨트롤 이름 : fpspread

본문

선택 셀을 Del 키를 눌러 지웠을때 빈칸이 되지 않고, 지정된 값(Default)이 들어가게 할수 있을까요?

예를 들어 1.0 이라든지 0.00  등으로요..

  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

3 답변

WinForms윈폼 Re: Cell 의 내용을 지웠을때 기본적으로 넣어지는 값을 지정할 수 있을까요?

추천0 이 글을 추천하셨습니다 비추천0 채택채택

페이지 정보

작성자 GCK써니 작성일 2023-08-18 14:27 댓글 4건

본문

iroon 님, 안녕하세요.

그레이프시티입니다.


문의하신 내용이 숫자셀 타입에서의 동작을 원하시는 게 맞으실까요?

만약 그렇다면, 아래 샘플 코드와 같이 사용자 정의 셀 타입을 사용하여, 셀의 value가 null일 때 지정한 기본 값이 화면에 표시되도록 하실 수 있습니다.

CustomNumberCellType customNuberCell = new CustomNumberCellType();
fpSpread1.ActiveSheet.Columns[0].CellType = customNuberCell;

public class CustomNumberCellType : FarPoint.Win.Spread.CellType.NumberCellType
{
    public override void PaintCell(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, object value, bool isSelected, bool isLocked, float zoomFactor)
    {
        base.PaintCell(g, r, appearance, (value is null) ? 0.00f : value, isSelected, false, zoomFactor);
    }
}

다만 이 경우, 화면에는 설정한 기본 값이 보여지지만 실제 value 속성은 null 입니다. 


샘플의 동작이 원하시는 기능과 다를 경우, 구현하고 싶으신 기능/사용 목적을 조금 더 구체적으로 공유해주시면 확인 후 안내 드리겠습니다.


예시:

 1) 처음에는 빈 셀이 보여지다가, 값을 입력했다 지운 경우에만 기본값이 보여지길 원한다.

 2) 숫자 셀 뿐만 아니라 일반 셀에서 텍스트를 입력했다가 지우는 경우도 있다.

 3) 기본값이 화면에 보여질 뿐만 아니라 셀의 value 속성 값으로 설정되길 원한다.

 등...


감사합니다.

그레이프시티 드림

댓글목록

iroon님의 댓글

iroon 작성일

감사합니다.
3) 기본값이 화면에 보여질 뿐만 아니라 셀의 value 속성값으로 설정되길 원합니다.
나중에 db에 저장할때 null 값으로 에러나는 것을 방지 하기위한 목적도 있습니다.

iroon님의 댓글

iroon 작성일

같은 맥락의 질문인데요.
PaintCell(g,r, appearance, (value is null) ? 0.00f : value ..........
텍스트 셀에서는

PaintCell(g,r, appearance, (value is null? ? "Empty" : value....
이렇게 하면 안되던데  텍스트 셀에서 기본값은 어떻게 넣는건지요.

GCK써니님의 댓글의 댓글

GCK써니 작성일

다음과 같이 사용자정의 TextCelltype을 만들어 사용하실 수 있습니다.

CustomTextCellType customTextCell = new CustomTextCellType();
fpSpread1.ActiveSheet.Columns[1].CellType = customTextCell;

public class CustomTextCellType : FarPoint.Win.Spread.CellType.TextCellType
{
    public override void PaintCell(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, object value, bool isSelected, bool isLocked, float zoomFactor)
    {
        base.PaintCell(g, r, appearance, (value is null) ? "Empty" : value, isSelected, false, zoomFactor);
    }
}

다만, 이 역시 화면에는 "Empty"를 표시하지만 value 속성의 값은 null을 반환합니다.
value 속성에도 기본값이 설정되는 방법을 확인 중이며, 관련 내용이 업데이트 되는 대로 안내드리겠습니다.

감사합니다.
그레이프시티 드림

GCK써니님의 댓글

GCK써니 작성일

@iroon 님, 안녕하세요.
문의하신 내용에 대하여 확인 중에 있습니다.
관련 내용이 업데이트 되는 대로 안내드리겠습니다.

감사합니다.
그레이프시티 드림

WinForms윈폼 Re: Cell 의 내용을 지웠을때 기본적으로 넣어지는 값을 지정할 수 있을까요?

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 GCK써니 작성일 2023-08-21 13:20 댓글 1건

본문

iroon 님, 안녕하세요.

그레이프시티입니다.


해당 기능은 Spread.NET에서 기본적으로 지원하는 기능은 아닙니다. 

대신 대안으로, CellChanged 이벤트를 활용하여 셀의 값을 지웠을 때, 셀이 빈 셀로 보여지는 것이 아니라 셀의 value 속성에 기본 값이 입력되게 할 수 있습니다. 

아래 샘플 코드를 참고 바랍니다.

private void Form1_Load(object sender, EventArgs e)
{
    fpSpread1.ActiveSheet.Columns[0].CellType = new FarPoint.Win.Spread.CellType.NumberCellType();
    fpSpread1.ActiveSheet.Columns[1].CellType = new FarPoint.Win.Spread.CellType.TextCellType();

    fpSpread1.ActiveSheet.CellChanged += ActiveSheet_CellChanged;
}

private bool _changingDefaultValue;
private void ActiveSheet_CellChanged(object sender, FarPoint.Win.Spread.SheetViewEventArgs e)
{
    if (_changingDefaultValue)
    {
        return;
    }

    _changingDefaultValue = true;
    FarPoint.Win.Spread.SheetView sheetView = (FarPoint.Win.Spread.SheetView)sender;

    for (int c = e.Column, c2 = c + e.ColumnCount; c < c2; c++)
    {
        for (int r = e.Row, r2 = r + e.RowCount; r < r2; r++)
        {
            if (sheetView.GetValue(r, c) == null)
            {
                switch (sheetView.GetCellType(r, c))
                {
                    case FarPoint.Win.Spread.CellType.NumberCellType:
                        sheetView.SetValue(r, c, 1);
                        break;
                    case FarPoint.Win.Spread.CellType.TextCellType:
                        sheetView.SetValue(r, c, "Empty");
                        break;
                }
            }
        }
    }

    _changingDefaultValue = false;
}


감사합니다.

그레이프시티 드림

댓글목록

iroon님의 댓글

iroon 작성일

sheetView.SetValue(r, c, 1) 이 것으로도 셀에 1이 표시되지만, 셀에 1이 저장 되지 않습니다.
잡고 아래로 드래그 하면 빈칸이 연속적으로 표시됩니다.

WinForms윈폼 Re: Cell 의 내용을 지웠을때 기본적으로 넣어지는 값을 지정할 수 있을까요?

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 GCK써니 작성일 2023-09-04 15:40 댓글 0건

본문

iroon 님, 안녕하세요.

그레이프시티입니다.


댓글로 말씀해주신 "끌어서 채우기" 기능을 확인해보았으나, 셀에 1.00 이라는 숫자가 정상적으로 채워지는 것으로 확인되었습니다. 

184d4b930f0b1b6944c610783d6f07e4_1693809602_0594.gif
 

또한 셀의 value 값도 저장되는 것으로 확인됩니다.


혹시 말씀하신 현상을 저희 쪽에서 재현해볼 수 있도록 실행 가능한 샘플 프로젝트를 공유해주실 수 있으실까요? 공유해주신 샘플 프로젝트를 기반으로 현상을 확인 및 원인을 파악하여 안내드릴 수 있도록 하겠습니다.


감사합니다.

그레이프시티 드림

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.