tomleee 님, 안녕하세요.
메시어스입니다.
아쉽게도, 프로그램 실행 중 수정된 컬럼의 정보들을 프로그램 종료 및 재실행 시 사용할 수 있도록 저장하는 기능은 Spread.NET에서 지원하지 않는 기능입니다.
다만, 데이터바인딩 기능을 사용하고 계시다면, 컬럼의 DataFields 속성과 Winforms의 settings를 함께 사용하여, 말씀하신 동작과 유사하게 구현해볼 수 있을 것으로 보여집니다.
예제를 전달 드리오니, 개발에 참고하여주시기 바랍니다.
- 열 및 필드 바인딩 사용자 정의
1. 시트에 DataSource를 설정하면서, 각 컬럼별 DataField를 설정합니다.
// 샘플 DataTable 설정
DataTable dt = new DataTable();
dt.Columns.Add("ColumnA");
dt.Columns.Add("ColumnB");
dt.Columns.Add("ColumnC");
dt.Rows.Add("A", "B", "C");
// 데이터 소스를 설정합니다.
fpSpread1.Sheets[0].DataSource = dt;
// 컬럼 이동을 허용합니다.
fpSpread1.AllowColumnMove = true;
// 각 컬럼별 DataField를 설정합니다.
fpSpread1.Sheets[0].Columns[0].DataField = "ColumnA";
fpSpread1.Sheets[0].Columns[1].DataField = "ColumnB";
fpSpread1.Sheets[0].Columns[2].DataField = "ColumnC";
2. Winforms Properties의 settings를 이용하면, 응용 프로그램을 종료했다가 재실행했을 때 유지되어야 하는 세팅 값들을 저장할 수 있습니다.
- Microsoft 도움말 문서 | how-to-write-user-settings-at-run-time-with-csharp
3. 폼이 종료되거나 특정 이벤트가 발생했을 때, 각 컬럼의 DataField 값을 settings에 저장합니다. DataField는 String형이기 때문에 예제에서는 StringCellection형 변수를 사용하였습니다.
Properties.Settings.Default.dataFieldCollection.Clear();
System.Collections.Specialized.StringCollection dataFieldCollection = new System.Collections.Specialized.StringCollection();
for (int index=0; index < fpSpread1.Sheets[0].ColumnCount; index++)
{
dataFieldCollection.Add(fpSpread1.Sheets[0].Columns[index].DataField);
}
Properties.Settings.Default.dataFieldCollection = dataFieldCollection;
Properties.Settings.Default.Save();
4. Form이 Load될 때 저장한 설정 값들을 가지고 와서 다시 설정하고, 데이터 소스를 설정합니다.
for (int index = 0; index < Properties.Settings.Default.dataFieldCollection.Count; index++)
{
fpSpread1.Sheets[0].Columns[index].DataField = Properties.Settings.Default.dataFieldCollection[index];
}
fpSpread1.Sheets[0].DataSource = dt;
공식블로그는 아니나, 위 단계를 수행할 때 참고할 수 있는 블로그 게시글을 공유드리니, 참고용으로 봐주시기 바랍니다.
- [C#] 설정 저장하고 재실행 시 저장한 값 불러오기
감사합니다.
메시어스 드림