C# 使用AJAX动态加载ASCX控件
我正在开发ASP.NET应用程序,并尝试执行以下操作: 我将只把一个ASPX页面分成两列。左列将是一个TreeView,右列将是编辑TreeView节点的内容 当用户可以在右侧列中选择要编辑的树视图节点时。根据节点的深度,右列上的字段将有所不同 例如,我想使用ASCX控件并使用AJAX动态加载右列。有更好的选择吗?我可以这样做吗 编辑:C# 使用AJAX动态加载ASCX控件,c#,asp.net-ajax,ascx,C#,Asp.net Ajax,Ascx,我正在开发ASP.NET应用程序,并尝试执行以下操作: 我将只把一个ASPX页面分成两列。左列将是一个TreeView,右列将是编辑TreeView节点的内容 当用户可以在右侧列中选择要编辑的树视图节点时。根据节点的深度,右列上的字段将有所不同 例如,我想使用ASCX控件并使用AJAX动态加载右列。有更好的选择吗?我可以这样做吗 编辑: 当用户想要编辑treeview的节点时,我不想重新加载整个页面。也许我需要在右边的专栏中添加一个UpdatePanel,不是吗?一般来说,这是可以做到的,而且使
当用户想要编辑treeview的节点时,我不想重新加载整个页面。也许我需要在右边的专栏中添加一个UpdatePanel,不是吗?一般来说,这是可以做到的,而且使用不同的.NET ajax框架也不难做到
很难提出“更好的选择”,因为这取决于您如何构建应用程序以及对它的不同需求。将您的treeview包装在UpdatePanel中,并在代码隐藏中添加以下代码。(假设您的右侧面板名为“PanelOnTheRight”,并且您有一个带有属性“IdToEdit”的usercontrol“MyEditControl”)
您可以使用Page.LoadControl方法加载用户控件。但我不确定它是否适用于Ajax是的,您需要将要更新的每个部分都包装在updatepanel中。我已经按照您的答案进行了操作,但当我单击树视图的节点时,加载的控件将消失在右列中。发生了什么事?我发现这篇文章解决了我的问题:
void MyTreeView_SelectedNodeChanged(Object sender, EventArgs e)
{
PanelOnTheRight.Controls.Clear();
MyEditControl editControl = LoadControl("~/usercontrols/mycontrol.ascx");
editControl.IdToEdit = ((TreeView)sender).SelectedNode.Value;
PanelOnTheRight.Controls.Add(editControl);
}