2010-02-02 3 views
0

디자인 타임에 페이지에 배치 된 웹 사용자 정의 컨트롤을 만들었습니다. 사용자가 선택할 수있는 항목의 격자로 팝업하는 것이 목적입니다. 그리드 뷰가 있습니다. 그리고 UserControl을이 코드는 :데이터 집합 수동으로 포스트 백 후 웹 사용자 정의 컨트롤의 viewstate 보관되지 않는다

SelectGrid2.DataTable = GetContacts().Tables(0) 
SelectGrid2.Show() 

을 그리고 이것은 잘 작동 :

Public Property DataTable() As Data.DataTable 
    Get 
     If Not IsNothing(ViewState("_SelectGridDataTable")) Then 
      Return ViewState("_SelectGridDataTable") 
     Else 
      Return Nothing 
     End If 
    End Get 
    Set(ByVal value As Data.DataTable) 
     ViewState("_SelectGridDataTable") = value 
    End Set 
End Property 

사용자가 페이지에서 버튼을 클릭 그래서

, 나는 페이지의 코드에 넣고. 그리드가 나타납니다 (jQuery 사용) 그리드가 표시됩니다. 문제는 사용자가 UserControl에서 "OK"버튼을 클릭하면 ViewState ("_ SelectGridDataTable")는 항상 아무 것도 없음입니다. 뷰 스테이트에 있기 때문에 나는 그것을 얻지 못한다. ..?!? 그래서 여기 viewstate는 정말로 viewstate를 의미하지 않습니까?

+0

페이지 수명주기에서 당신은이 속성을 부르시겠습니까? –

+0

페이지가 이미로드되었습니다. 사용자가 버튼 (업데이트 패널에 있음)을 클릭합니다. 그런 다음 "SelectGrid2.DataTable, SelectGrid2.Show()"명령을 실행합니다. – Dan

+0

ViewState에 DataSets/DataTable을 저장하면 페이지 성능이 저하 될 수 있습니다. 가능한 경우 Session을 사용하여 DataSet을 저장하는 것을 고려해야합니다. 이유에 대해 더 잘 이해하려면 다음을 참조하십시오. http://www.dotnetjohn.com/articles.aspx?articleid=71 – Jagd

답변

0

죄송합니다. viewstate가 Page_Init 중에 존재하지 않는다는 것을 알지 못했습니다. 나는 데이터 테이블에 대한 체크를 페이지로드로 옮겼다. 이제는 작동한다. 저에게 그 아이디어를 확인해 주셔서 감사합니다 @Michel ..