2012-07-18 3 views
0

대 텍스트 상자에 다시 게시하는 것은 내 코드입니다.여기 라벨

그러나 단추를 클릭하여 데이터베이스의 값을 업데이트하면 예상되는 포스트 백이 발생합니다. 이 루프로 돌아 왔을 때, dr [ "Jan"]. ToString()은 새로운 올바른 값 기반을 가지지 만, 오리지널의 텍스트 상자는 절대로 업데이트되지 않습니다.

나는이에 코드를 변경하는 경우 -

dtDetails = getDataSet(); 

foreach (DataRow dr in dtDetails.Rows) { 

    int rowID = 1; 
    HtmlTableRow row = new HtmlTableRow(); 
    { 
     HtmlTableCell cell = new HtmlTableCell(); 
     Label lbl = new Label(); 
     lbl.ID = "lblJanuary" + rowID; 

     lbl.Text = dr["Jan"].ToString(); 

     cell.Controls.Add(lbl); 
     row.Cells.Add(cell); 
    } 

    rowID ++; 
} 

을 레이블이 올바른 새 값이 포함되어 있습니다.

올바른 값을 표시하지 않는 텍스트 상자는 무엇입니까?

+0

왜 'GridView'를 사용하고 있지 않습니까? 동적 컨트롤을 관리하는 것은 일반적으로 다소 고통 스럽습니다. – Candide

+0

긴 이야기. 내 AJAX 호출에 대해 더 잘 작동하므로이 접근 방식을 사용하는 것을 선호합니다. – duckmike

답변

0

Label의 ID를 생성하는 데 사용하는 int 변수 rowID을 절대로 늘리지 않습니다.

따라서이 문제로 인해 ViewState이 제대로 작동하지 않는다고 가정합니다.

이 시도 : 그에서

foreach (DataRow dr in dtDetails.Rows) { 

    int rowID = 1; 
    HtmlTableRow row = new HtmlTableRow(); 
    { 
     HtmlTableCell cell = new HtmlTableCell(); 
     TextBox tb = new TextBox(); 
     tb.ID = "tbJanuary" + rowID++; 

     tb.Text = dr["Jan"].ToString(); 

     cell.Controls.Add(tb); 
     row.Cells.Add(cell); 
    } 
} 

Apat, 그렇지 않으면 당신은 이전과 동일한 ID와 포스트 백에 각 동적으로 생성 된 컨트롤을 다시해야하기 때문에 내가 강하게하는의 GridView 또는 다른 DataBound control를 사용하는 것이 좋습니다. 읽기 전용 사용

+0

나는 실제로 rowID를 증가시키고, 예제에 넣는 것을 잊었다. – duckmike

+0

내 편집을 참조하십시오 ... – duckmike

0

ASP.NET 2.0은 Textbox 제어 true로서의 ReadOnly 속성을 표시하는 설계 변경, 당신이 그 기능을 원하는 대신 텍스트 상자를 만드는 postback.If에서 동일한를 클라이언트 측의 변경 사항을 무시 것이며 잃게했다 속성 옵션. 코드 추가 : 여전히 읽기 전용 텍스트 상자를 만들 것입니다 및 각 포스트 백

그래서 후 값을 유지합니다 코드 숨김에서

TextBox1.Attributes.Add("readonly", "readonly"); 

를, 당신의 코드는 다음과 같아야합니다

dtDetails = getDataSet(); 

foreach (DataRow dr in dtDetails.Rows) { 

    int rowID = 1; 
    HtmlTableRow row = new HtmlTableRow(); 
    { 
     HtmlTableCell cell = new HtmlTableCell(); 
     TextBox tb = new TextBox(); 

     tb.ID = "tbJanuary" + rowID; 

     tb.Text = dr["Jan"].ToString(); 
     tb .Attributes.Add("readonly", "readonly"); 
     cell.Controls.Add(tb); 
     row.Cells.Add(cell); 
    } 
} 
+0

그다지 도움이되지 않았습니다 – duckmike

+0

텍스트 상자에 값을 할당 한 후 읽기 전용 속성을 정의 했습니까? –

+0

네, 저는 당신의 예를 좋아했습니다. – duckmike