2012-02-07 3 views
0

나는 webusercontrol (MiniUrunControl.ascx)을 가지고 있으며이 webusercontrol에는 버튼을 추가하고 버튼 클릭 기능은 imgButtonMini_Click입니다. WebUserControl 버튼 클릭

protected void imgButtonMini_Click(object sender, ImageClickEventArgs e) 
{ 
    DataTable _tablo = (DataTable)Session["KULLANICISEPETI"]; 
    foreach (DataRow _row in _tablo.Rows) 
    { 
     if (_row["urunid"].ToString() == lbUrunID.Text) 
     { 
      _tablo.Rows.Remove(_row); 
      Session["KULLANICISEPETI"] = _tablo; 
      break; 
     } 
    } 

    this.Page.GetType().InvokeMember("ShowSepetBilgisi", 
     System.Reflection.BindingFlags.InvokeMethod, null, this.Page, new object[] { }); 

} 

지금,이 같은 Default.aspx를하고 Default.aspx를 코드 숨김에서 패널 컨트롤을 추가; 웹 사이트를 실행하면

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(ispostback==false) ShowSepetBilgisi(); 
} 

public void ShowSepetBilgisi() 
{ 
    DataTable _tablo = (DataTable)Session["KULLANICISEPETI"]; 

    if (_tablo == null) return; 

    pnlMiniUrunler.Controls.Clear(); 

    foreach (DataRow _row in _tablo.Rows) 
    { 
     MiniUrunControl _mini = (MiniUrunControl)LoadControl("MiniUrunControl.ascx"); 
     _mini.SetInfo(_row["urunid"].ToString(), _row["adet"].ToString()); 
     pnlMiniUrunler.Controls.Add(_mini); 
    } 
} 

이 좋아, 내가 패널 컨트롤에 추가 내 모든 제품 (패널에서 10 webusercontrols)를 참조하십시오. 하지만 imgButtonMini 버튼을 클릭하면 모든 컨트롤이 사라지고 패널이 비어 있습니다. 또한 내 버튼 클릭 기능이 작동하지 않습니다.

문제의 원인을 알려줄 수 있습니까? 어떻게 버튼 기능을 실행할 수 있습니까? 감사합니다.

+0

동적으로 추가하는 경우 웹 사용자 컨트롤을 매번 추가해야합니다. –

+0

안녕하세요, 전 항상이 작업을 수행합니까? 모든 시간에 패널에 다시 추가 할 예정이 아닙니까? – atromgame

+0

예, 동적으로 사용자 정의 컨트롤을 만들고 페이지에 추가하는 경우 다시해야합니다. 따라서 LoadControl ("... ascx"); 다시 게시 할 때이 작업을 수행해야합니다. 그렇지 않으면 컨트롤이 이벤트가 유선에 연결되지 않습니다. 이러는거야? –

답변

0

코드를 읽으면 페이지에 한 번만 하위 컨트롤이 추가됩니다. 이 방법을 사용하려면 다시 게시 할 때마다 추가해야합니다. 그렇지 않으면 컨트롤이 사라집니다.

1

당신이 사업부 id="pcdiv"runat="server"을 갖는이 당신의 product_page.aspx에 product.ascx 제어 및 이 예를 들어 메인 컨트롤에서 각 컨트롤을 반복. 이제 C#에서 다음과 같이 반복하십시오 :

foreach(control item in (product)div.controls.oftype(product)){ 
    if(item.value == 'true') { 
    Response.write("Got it"); break;//incase only 1 object to iterate 
    } 
} 

이 코드를 테스트하지 않았으므로 컨트롤 캐스팅을 확인하십시오. 그러나이 프로젝트를 일부 프로젝트에서 사용했습니다.