2009-12-06 6 views
0

페이지에 간단한 테이블이 있고 일부 초기 셀이 있고 다른 사용자가 입력해야합니다. 나는 ItemTemplate을 함께하여 DataList를 사용DataList에서 데이터 가져 오기

<ItemTemplate> 
    <asp:TextBox ID="CellTextBox" runat="server" Text='<%# Bind("Cell") %>' /> 
</ItemTemplate> 

코드에서 나는이 컨트롤의 데이터 바인딩()를 오버라이드 (override) :

public override void DataBind() 
     { 
      MyDataList.DataSource = dataTable; 
      MyDataList.DataBind(); 
     } 

이 지금은 작동하지 않습니다. 사용자가 일부 셀을 입력하고 제출 버튼을 클릭하지만 dataTable (이 버튼 OnClick 이벤트를 전달하는 메소드에서)은 사용자의 데이터를 포함하지 않습니다. 어떻게해야합니까?

+0

안녕하세요, 틀린 것일 수 있지만 바인딩 된 값을 표시하려면 바인딩 ("셀") ​​대신 Eval ("셀")을 사용하면 안됩니다. – Marko

답변

0

잘 모르겠지만 페이지로드시 게시물을 확인해야하기 때문에 문제가 발생할 수 있습니다. 당신은 이런 식으로 뭔가를 시도 할 수 있습니다 :

public void Page_Load(Object sender, EventArgs e) 
{ 
    if (!this.IsPostBack) 
    { 
    myDataList.DataSource = myManager.GetDataTable(); 
    myDataList.DataBind(); 
    } 
} 

그 방법으로, 데이터는 상기 intial 페이지로드에 제어하지 이후의 포스트 백 요청에 바인딩됩니다. Page_ Load는 각 요청에 대해 호출되며, Page_Load의 메소드와 코드는 버튼 클릭 방식보다 먼저 실행됩니다. 따라서 현재 요청이 포스트 백인지 확인하려면 페이지의 IsPostBack 속성을 확인해야합니다. 그렇다면 사용자가 입력 한 내용을 잃어 버리기 때문에 데이터를 컨트롤에 바인딩하지 마십시오.

+0

죄송합니다. 정보가 너무 적습니다. 세부 정보가 있습니다 – Sevina

+0

ItemTemplate (EditItemTemplate 아님)의 컨트롤이 #Bind를 사용하여 사용자가 입력 한 데이터를 검색 할 수 있는지 의심 스럽습니다. – Sevina

+0

Session/In 디버그 모드를 사용했기 때문에 표가 세션 상태에서 가져옵니다. 하지만 내가 어떻게해야 할까? – Sevina