요구사항 : 동적으로 구성한 Table Control의 상태를 유지
배경 : Database에서 특정 데이터를 가져와 가공한 뒤 사용자의 입맛에 맞게 테이블로 그 결과를 구성하였다. 하지만 다른 컨트롤을 조작하여 PostBack이 일어난다면 이전에 바운딩한 테이블 정보들이 모두 초기화 된다. 따라서 PostBack이 일어나도 이전 단계의 테이블 상태를 유지하는 것이 필요하였다.
조건 : 테이블 내용이 바뀔 필요가 없는 경우 PostBack이 일어난 뒤 DB 접근은 하지 않는다.
예제 코드
Table Table_Work_History;
protected void Page_Load(object sender, EventArgs e)
{
if(Page.IsPostBack){
if(Session["Table"] != null){
Table_Work_History = (Table)Session["Table"]; // 저장된 테이블 상태 로딩
PH.Controls.Add(Table_Work_History); // PH : Place Holder
}
}
}
protected void rend_working()
{
// Bounding Code
Session["Table"] = Table_Work_History; // 테이블 상태를 세션에 저장
}
protected void Page_Load(object sender, EventArgs e)
{
if(Page.IsPostBack){
if(Session["Table"] != null){
Table_Work_History = (Table)Session["Table"]; // 저장된 테이블 상태 로딩
PH.Controls.Add(Table_Work_History); // PH : Place Holder
}
}
}
protected void rend_working()
{
// Bounding Code
Session["Table"] = Table_Work_History; // 테이블 상태를 세션에 저장
}
참고 :
- Place Holder를 쓴이유는 테이블을 로딩한 후에 특정 위치에 넣어주기 위함이다.
- Session을 이용하여 상태를 저장한 이유는 ViewState를 사용하면 Serializable 예외가 발생하기 때문이다.
'Programming > ASP .NET' 카테고리의 다른 글
6자 이상에 특수 문자를 한자 이상한 포함한 문자에 대한 정규식 (0) | 2007.08.06 |
---|---|
TreeView에서 체크박스 이벤트 발생시키기 (0) | 2007.05.03 |
팝업 띄어서 Yes'No 묻기 (0) | 2007.04.23 |
엑셀 오토메이션을 이용하여 데이터를 엑셀 파일로 저장하기 (0) | 2007.04.15 |
String.Format 할 때 자리수 맞추기 (0) | 2007.03.02 |