2012-07-20 78 views
0

我正在一个asp.net项目,我有一个主要的ascx控制由两个RadSpliters分开。在加载main.ascx时,应用程序正在加载两个其他控件,即control1.ascx和control2.ascx。在control1中我有一个树视图,并在树视图的选定节点上,我想重新加载control2.ascx。有没有办法做到这一点。下面我粘贴我正在使用的代码,但不工作。有任何帮助或建议吗?刷新或添加从另一个ascx控制ascx控制

public partial class Control1: System.Web.UI.UserControl 
{ 
     protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e) 
    { 
     BrowseProject b = new BrowseProject(); 
     b.load(); 
    } 




public partial class MainControl : System.Web.UI.UserControl 
    { 
      public void load() 
     { 
       Control codeEditor = Page.LoadControl("Control2.ascx"); 
      PlaceHolder4.Controls.Clear(); 
      PlaceHolder4.ID = "PlaceHolder4"; 
      PlaceHolder4.Controls.Add(codeEditor); 

     } 

回答

0
public interface IReload{ 
    public void reload(); 
} 

public partial class Control2: System.Web.UI.UserControl, IReload 
{ 

} 

public partial class Control1: System.Web.UI.UserControl 
{ 
    IReload _r; 

    public IReload setReload 
    { 
     set { _r = value; } 
    } 


    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e) 
    { 
     BrowseProject b = new BrowseProject(); 
     b.load(); 
     if(_r != null){ 
      _r.reload(); 
     } 
} 

public partial class MainControl : System.Web.UI.UserControl 
{ 
     public void load() 
    { 
     Control codeEditor = Page.LoadControl("Control2.ascx"); 
     PlaceHolder4.Controls.Clear(); 
     PlaceHolder4.ID = "PlaceHolder4"; 
     PlaceHolder4.Controls.Add(codeEditor); 

     c.setReload(codeEditor); 
    } 
+0

什么类型是线c.setReload(codeEditor)对象C; – user1292656 2012-07-20 10:04:23

+0

哦对不起。尝试c.setReload((IReload)codeEditor); – user1519979 2012-07-20 10:14:05

+0

是的,但什么类型的C? Moreovr我得到一个setReload方法错误,说不一致的可访问性:属性类型'。'比属性更难以访问 – user1292656 2012-07-20 10:20:28