2011-09-07 1 views
0

두 웹 파트를 연결하는 코드를 작성하는 동안 두 개의 레이블을 만들었습니다. 두 레이블의 텍스트 값은 OnPreRender 메서드로 작성되었습니다. 그러나 CreateChildControl 메서드에서 한 레이블에 대한 컨트롤을 추가하는 것을 잊었습니다. 그래서 디버깅하는 동안, 나는 그 게시물을 다시 게시 후을 추가하는 것을 잊어 버린 레이블이 값을 유지하지 않고 빈 문자열을 보여 주었다. 그러나 내가 추가 한 컨트롤 인 레이블이 추가되었습니다. 값을 유지하십시오.공유 지점에서 뒤로 (단추 클릭)하는 동안 레이블 값을 유지할 수 없습니다.

protected override void CreateChildControls() 
    { 
     base.CreateChildControls(); 




     btnup.Text = " Update"; 

     this.Controls.Add(lblid);//**If i add this, the label retains the value during post back , otherwise its null** 


     this.Controls.Add(lblname); 
     this.Controls.Add(lbldesig); 
     this.Controls.Add(tbdes); 
     this.Controls.Add(lblcomp); 
     this.Controls.Add(tbcomp); 
     this.Controls.Add(btnup); 

     btnup.Click += new EventHandler(btnup_Click); 
    } 


protected override void OnPreRender(EventArgs e) 
    { 
     base.OnPreRender(e); 

     if (connectionInterface != null) 
     { 

      id = connectionInterface.parameter1; 

      SPWeb mysite = SPContext.Current.Web; 
      SPList mylist = mysite.Lists["UpdateList"]; 
      SPListItemCollection itemcol = mylist.Items; 

      foreach (SPListItem itm in itemcol) 
      { 
       string nm = itm["Company_Id"].ToString(); 
       if (nm.Equals(id)) 
       { 
        lblid.Text = itm["Company_Id"].ToString(); 
        lblname.Text = itm["Name"].ToString(); 
        l 
       } 

      } 


     } 
     else 
     { 
      lblname.Text = "nothing is recieved!"; 
     } 

    } 

왜 이런 식으로 행동합니까?

+0

몇 가지 샘플 코드를 추가하십시오. –

답변

0

이것은 정상적인 동작입니다. Controls 컬렉션에 컨트롤을 추가하지 않으면 ASP.NET 프레임 워크는 포스트 백에서 해당 값을 유지하지 않으므로 다시 게시하는 동안 손실됩니다.

관련 문제