protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { MakeCheckBoxItem(cbTest); string checkList = ReadSaveFile(); FillCheckBoxList(cbTest, CheckListSplit(checkList)); } } private void FillCheckBoxList(CheckBoxList checkbox, string[] str) //체크박스리스트의 아이템에 해당 아이템을 체크함 { foreach (string item in str) { foreach (ListItem li in checkbox.Items) { if (item == li.Value.ToString()) { li.Selected = true; break; } } } } private string[] CheckListSplit(string str) //파일에 저장되어있던 체크된 아이템리스트를 '|'로 분리 { char[] ch = {'|'}; string[] strSplit = str.Split(ch, StringSplitOptions.None); return strSplit; } private void MakeCheckBoxItem(CheckBoxList checkbox) //체크박스리스트의 아이템을 생성 { for (int i = 0; i < 12; i++) { ListItem list = new ListItem("Test" + (i + 1).ToString(), (i + 1).ToString()); checkbox.Items.Add(list); } } private string ReadSaveFile() //텍스트파일에 저장되어 있는 선택된 아이템 리스트를 읽어온다. { string returnValue = string.Empty; FileInfo fInfo = new FileInfo("c:\\test.txt"); if (fInfo.Exists) { FileStream fs = new FileStream("c:\\test.txt", FileMode.Open, FileAccess.Read, FileShare.None); byte[] buffer = new byte[1024]; int count = fs.Read(buffer, 0, buffer.Length); returnValue = Encoding.UTF8.GetString(buffer, 0, count); fs.Close(); fs.Dispose(); } return returnValue; } protected void btnTest_Click(object sender, EventArgs e) { string str = GetSelectedList(cbTest); SaveFile(str); } private string GetSelectedList(CheckBoxList checkbox) //선택된 체크박스리스트의 아이템의 value값을 읽어온다. { string str = string.Empty; foreach (ListItem li in checkbox.Items) { if (li.Selected) { if (str == "") { str = li.Value; } else { str += "|" + li.Value; } } } return str; } private void SaveFile(string str) //선택된 체크박스리스트의 value 값을 파일에 저장한다. { FileStream fs = new FileStream("c:\\test.txt", FileMode.Create, FileAccess.Write, FileShare.None); byte[] buffer = Encoding.UTF8.GetBytes(str); fs.Write(buffer, 0, buffer.Length); fs.Close(); fs.Dispose(); } 기능 별로 메소드를 하나씩 생성을 해두었습니다. 여기서 주위 깊게 봐야 하는 곳이 선택된 아이템의 Value 값을가져오는 GetSelectedList 메소드와 파일로부터 읽어온 선택되었던 아이템 value 값을 이용해 다시 체크박스리스트에 반영시키는 FillCheckBoxList 메소드입니다. 보시는 것과 같이 특별한 문법은 쓰지 않았습니다. 각 리스트를 순회하면서 Selected를 체크해서 선택되어 있다면 value값을 저장하고 또는 체크를 시키는 방법을 사용하였습니다. 꽤 간단하지요. 특별한 문법은 없지만 꽤 많이 쓰일 수 있는 부분이라 이렇게 포스팅을 해보았습니다. 많은 분들에게 도움이 되었으면 좋겠네요.
'.NET > asp.net' 카테고리의 다른 글
특정 페이지 존재 여부 확인 (0) | 2013.05.06 |
---|---|
웹 폰트 적용중 생긴 문제점 (0) | 2011.11.21 |
자바스크립트에서 asp.net 비하인드 코드 실행하기 (2) | 2011.01.14 |
asp.net 쿠키 생성, 사용, 삭제 (0) | 2011.01.10 |
뒤로 가기 구현 (0) | 2010.11.07 |
TextBox에서 엔터키 이벤트 지정 (0) | 2010.11.07 |
해당 컨트롤에 코드 블록(<% ... %>)이 포함되어 있으므로 Controls 컬렉션을 수정할 수 없습니다. (0) | 2010.11.07 |
CheckBoxList 다중선택 정보 읽어와 체크시 문제 (0) | 2010.11.07 |
asp.net에서 post전송 (0) | 2010.07.09 |