2010-03-16 1 views
1

내 간단한 시작 ASP 페이지에서 DataTable을 만들고 두 행을 채 웁니다. 웹 사이트에서는 사용자가 새 행을 추가 할 수 있습니다. 내 문제는 DataTable이 정보를 저장하지 않는다는 것입니다. 나는 코드를 밟았으며 행이 추가되었지만 다음에 행이 추가되면 다음 행에 추가되지 않습니다. 원래 2 개만 입력하고 최신 행을 입력하십시오.ASP.net DataTable에 새 행이 저장되지 않습니다.

나는이 일을 부끄럽게 생각하고 있지만, 왜 새로운 행이 저장되는지 궁금합니다.

내 코드 : 나는 GridView 컨트롤에 저장하기 해봤지만 그 일이 꽤 보인다

protected void Page_Load(object sender, EventArgs e) 
    { 
     _Default.NameList = new DataTable(); 
     DataColumn col = new DataColumn("FirstName", typeof(string)); 
     _Default.NameList.Columns.Add(col); 
     col = new DataColumn("LastName", typeof(string)); 
     _Default.NameList.Columns.Add(col); 
     DataRow row = _Default.NameList.NewRow(); 
     row["FirstName"] = "Jane"; 
     row["LastName"] = "Smith"; 
     _Default.NameList.Rows.Add(row); 
     row = _Default.NameList.NewRow(); 
     row["FirstName"] = "John"; 
     row["LastName"] = "Doe"; 
     _Default.NameList.Rows.Add(row); 
    } 

    protected void AddButton_Click(object sender, EventArgs e) 
    { 
     DataRow row = _Default.NameList.NewRow(); 
     row["FirstName"] = this.TextBox1.Text; 
     row["LastName"] = this.TextBox2.Text; 
     _Default.NameList.Rows.Add(row); 
     _Default.NameList.AcceptChanges(); // I've tried with and without this. 
    } 

. 저는 ASP.Net을 처음 사용하지만 지난 2 년 동안 C#으로 Windows 프로그래밍을 해왔습니다.

답변

1

페이지가로드 될 때마다 새로운 DataTable 개체가 생성됩니다.

DataTable 개체를 세션 상태 또는 정적 변수에 유지하거나 데이터를 데이터베이스에 저장해야합니다.

0

버튼 클릭과 같은 이벤트 처리에는 전체 포스트 백이 필요합니다. 클릭 코드 만 실행하면 페이지 클래스의 새 인스턴스에서 전체 페이지 수명주기를 실행합니다. 페이지 클래스의 새 인스턴스는 데이터 테이블의 새 인스턴스를 의미합니다.

0

여기서 문제는 페이지가로드 될 때마다 사용자의 DataTable이 생성되고 페이지가로드되어 사용자에게 표시되면 범위를 벗어나는 것입니다. 원하는 효과를 얻으려면 DataTable을 Session, ViewState, 캐시에 저장하고 GridView와 같은 컨트롤을 사용하여 기본 데이터를 자동으로 해당 상태에 저장해야합니다.

ASP.NET을 처음 사용하기 때문에 state management에 대한 옵션을 확인하십시오.