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

윈폼 스프레드 디자인 모드에서 컬럼의 잠금 기능 > Q&A | 토론

본문 바로가기

Spread.NET

Q&A | 토론

WinForms윈폼 윈폼 스프레드 디자인 모드에서 컬럼의 잠금 기능

페이지 정보

작성자 정재원 작성일 2024-04-17 11:57 조회 30회 댓글 2건
제품 버전 : 16.2.20231.0
컨트롤 이름 : spread . net

본문

1. 요청사항

윈폼 스프레드 디자인 모드에서 컬럼을 선택하고 마우스 오른쪽 키 후

잠금항목을 선택하고 RowMode 로 세팅을 하고

화면을 실행하면 잠금이 안되고 해당컬럼의 셀에서 수정이 됩니다.


시트에서 protect 모드를 잠금하면 상단의 헤더가 흐릿해 집니다.

이전버전에서는 잘되던것인데 이번 버전에서는 안되는데 확인 부탁드립니다.


2.요청사항 

디자인모드에서 설정메뉴의 시트스킨 기능 중 사용자 지정의 EvenRowBackColor 기능이 적용안됩니다. 


3. 스프레드에 데이터를 뿌릴때에 데이터테이블(objTbl)에 데이터를 넣고서

DataSource 로 바인딩을 하고나서  this.fpSrd.Sheets[0].DataSource = (object)objTbl; 

이후에 

this.fpSrd.Sheets[0].Cells[10, 16].Text = "Y";

해당셀의 값을 수정이 적용이 안됩니다. 


요번에 16버전으로 변경 후 적용이 안되는 기능입니다.

어떻게 해야 할지 알려주세요




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

댓글목록

쌍둥이아빠님의 댓글

쌍둥이아빠 작성일


1번의 질문 내용은 아래와 같이 하면 헤더가 흐릿하게 보이는 증상이 없어질것 같습니다.

sprGrid.Sheets[0].Protect = true;
sprGrid.Sheets[0].ColumnHeader.Rows[0].Locked = false;
sprGrid.Sheets[0].RowHeader.Columns[0].Locked = false;

삭제된 댓글

정재원 작성일

삭제된 댓글 입니다.

2 답변

WinForms윈폼 Re: 윈폼 스프레드 디자인 모드에서 컬럼의 잠금 기능

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

페이지 정보

작성자 MESCIUS써니 작성일 2024-04-18 09:06 댓글 0건

본문

정재원 님, 안녕하세요.

메시어스입니다.


문의하신 내용은, Spread.NET V10으로 개발한 내용을 V16으로 마이그레이션한 경우가 아닌 Spread.NET V16을 이용하여 새 프로젝트를 진행하실 때의 케이스로 생각이 됩니다.


Spread.NET V10과 V16 사이에는 계산 모델 및 스타일 모델 등에서 다양한 변화가 있습니다. 이에 V10에서 적용했던 방법이 V16에서는 동일하게 동작하지 않을 수 있는 점, 제품 사용 시 참고 부탁드립니다.


문의하신 사항에 대하여 다음과 같이 안내 드립니다.



#1. 특정 컬럼만 수정이 되지 않도록 설정하는 방법


Spread.NET V16에서, 기본적으로 모든 컬럼의 Locked 속성 값이 true로 설정되어있습니다. 이는 Spread.NET V10에서 모든 컬럼의 기본 Locked 속성 값이 False로 설정되어있는 것과는 차이가 있는 부분입니다.


따라서 Spread.NET V16에서 특정 컬럼 내 셀만 수정이 되지 않도록 잠금을 설정하고 싶으시다면, 아래 순서에 따라 진행해주시기 바랍니다.

  1. 시트 내 모든 컬럼의 Locked 속성을 False로 설정합니다.
  2. 수정 불가하게 하고 싶은 컬럼의 Locked 속성을 True로 설정합니다.
  3. 해당 시트의 Protect 속성을 True로 설정합니다.


3)에서 시트 잠금을 설정했을 때, 컬럼 헤더가 음영처리 되는 것을 원치 않으신다면, 아래 링크된 게시글에서 안내하는 방법을 적용해주시기 바랍니다.

또는 쌍둥이아빠 님께서 댓글로 공유해주신 방법과 같이, 아래 코드를 적용해보실 수 있습니다. 

fpSpread1.Sheets[0].Protect = true;
fpSpread1.Sheets[0].ColumnHeader.Rows[0].Locked = false;
fpSpread1.Sheets[0].RowHeader.Columns[0].Locked = false;



#2. 짝수 행의 배경색 설정하는 방법


시트 스킨 기능 중 사용자정의의 EvenRowBackColor 기능은 구 스타일 모델인 Composite Style에서 지원하는 기능입니다. 이 기능을 사용하고 싶은 경우 스프레드의 LegacyBehaviors.Style을 활성화해야합니다. 이 경우 구 스타일 모델이 동작합니다.


해당 기능을 사용하지 않고 새 스타일 모델인 Flat Style을 사용하고자 하는 경우, 아래 샘플 코드와 같이 AlternatingRows 기능을 활용해주시기 바랍니다.

// 시트 내 데이터 영역의 교대 행에 대한 GrapeCity.Spreadsheet.IAlternatingStyles 개체를 가져옵니다.
GrapeCity.Spreadsheet.IAlternatingStyles rowAltStyles = fpSpread1.AsWorkbook().ActiveSheet.Styles.AlternatingRows;
             
// Count 속성을 교대로 반복되길 원하는 행 패턴의 수로 설정합니다.            
rowAltStyles.Count = 2;
             
// 첫 번째 행은 기본 설정을 사용합니다.    
// 두 번째 행은 연한 파란색 배경을 사용합니다.
rowAltStyles[1].Interior.Color = GrapeCity.Spreadsheet.Color.FromArgb(224, 255, 255);


아래 링크된 게시글을 통해 보다 자세한 내용을 확인하실 수 있습니다. 



#3 스프레드에 데이터 테이블 바인딩한 후, 버튼 클릭 시 셀의 텍스트가 바뀌게 설정했는데, 텍스트 변경이 안되는 현상


말씀해주신 현상이 재현되어 본사 측으로 확인 중입니다. 관련 내용이 업데이트 되는 대로 안내드리겠습니다.



감사합니다.

메시어스 드림

댓글목록

등록된 댓글이 없습니다.

WinForms윈폼 Re: 윈폼 스프레드 디자인 모드에서 컬럼의 잠금 기능

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

페이지 정보

작성자 MESCIUS써니 작성일 2024-04-18 10:12 댓글 4건

본문

첨부파일

정재원 대표님, 안녕하세요.

메시어스입니다.


세 번째 문의에 대하여 추가 안내 드립니다.


테스트를 위하여 아래와 같이 테스트 코드를 작성하고 실행하였을 때, 정상적으로 셀 값이 변경되는 것을 확인하였습니다.

DataTable dt;

private void Form1_Load(object sender, EventArgs e)
{
    dt = new DataTable("TableName");
    dt.Columns.Add("Y/N");
    dt.Columns.Add("Value", typeof(Int32));
    dt.Rows.Add(new Object[] { null, 100 });
    dt.Rows.Add(new Object[] { "N", 200 });
    dt.Rows.Add(new Object[] { "N", 300 });
    dt.Rows.Add(new Object[] { "Y", 400 });
    dt.Rows.Add(new Object[] { "N", 500 });
    dt.Rows.Add(new Object[] { "Y", 600 });
    dt.Rows.Add(new Object[] { "Y", 700 });
    dt.Rows.Add(new Object[] { "Y", 800 });
    dt.Rows.Add(new Object[] { "N", 900 });
    dt.Rows.Add(new Object[] { "N", 1000 });

    fpSpread1.Sheets[0].DataSource = dt;
}

private void button1_Click(object sender, EventArgs e)
{
    fpSpread1.Sheets[0].Cells[9, 0].Text = "Y";
    MessageBox.Show(dt.Rows[9][0].ToString());

}


정상적으로 동작하는 샘플 프로젝트를 첨부파일로 전달드립니다. 샘플 프로젝트를 작성하신 코드와 비교하시어 어떠한 차이점이 있는지 확인 부탁드립니다.


텍스트 값이 변경되지 않는 현상이 지속적으로 발생할 경우, 해당 현상의 저희 측에서 재현해 볼 수 있는 샘플 프로젝트를 만들어 공유해 주시면, 전달해 주신 샘플을 기반으로 디버깅 및 확인 후 회신드리겠습니다.


감사합니다.

메시어스 드림

댓글목록

정재원님의 댓글

정재원 작성일

sprGrid.Sheets[0].Protect = true;
이것을 하면 컬럼의 사이즈가 조정이 안됩니다. ㅠㅠ
이전버전 처럼 단순이 해당컬럼만 수정이 안되도록 하고 싶습니다.

MESCIUS써니님의 댓글의 댓글

MESCIUS써니 작성일

시트 잠금 시 컬럼 너비 조정을 허용하려면, sprGrid.Shets[0].Protext = true; 설정 대신 아래와 같이 Protect 메서드와 옵션을 지정하여 시트 보호를 설정해보시기 바랍니다!

sprGrid.Sheets[0].AsWorksheet().Protect(GrapeCity.Spreadsheet.WorksheetLocks.Default &  ~GrapeCity.Spreadsheet.WorksheetLocks.FormatColumns);

정재원님의 댓글

정재원 작성일

3번째것의 증상은 mssql 데이터베이스에서  쿼리로  select 컬럼명1, 컬럼명2, 'N' from 테이블명 으로 데이터를 호출해서 바인딩 후 3번째 컬럼을 fpSpread1.Sheets[0].Cells[2, 3].Text = "Y"; 하면 적용이 안됩니다.

MESCIUS써니님의 댓글의 댓글

MESCIUS써니 작성일

데이터베이스에서 쿼리해서 가져온 데이터를 DataTable 객체에 채운 후, DataTable 객체를 시트의 DataSource로 설정하신 것으로 이해됩니다.

그렇다면 작성하신 코드와 오전에 전달 드린 샘플 프로젝트에서의 동작에 차이가 없을 것으로 예상됩니다.
정확한 확인을 위해 저희 측에서 말씀하신 현상을 재현해 볼 수 있는 실행 가능한 샘플 프로젝트를 공유 부탁드립니다.

"3번째 컬럼을 fpSpread1.Sheets[0].Cells[2, 3].Text = "Y"; 한다"는 말씀은 데이터 영역의 어떤 한 셀(D3셀)의 값을 "Y"로 설정하고 싶다는 뜻으로 이해되는데, 맞나요? 아니면 세 번째 컬럼에 포함된 모든 셀의 값을 "Y"로 변경하고 싶다는 뜻이실까요?

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