Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用AJAX动态加载ASCX控件_C#_Asp.net Ajax_Ascx - Fatal编程技术网

C# 使用AJAX动态加载ASCX控件

C# 使用AJAX动态加载ASCX控件,c#,asp.net-ajax,ascx,C#,Asp.net Ajax,Ascx,我正在开发ASP.NET应用程序,并尝试执行以下操作: 我将只把一个ASPX页面分成两列。左列将是一个TreeView,右列将是编辑TreeView节点的内容 当用户可以在右侧列中选择要编辑的树视图节点时。根据节点的深度,右列上的字段将有所不同 例如,我想使用ASCX控件并使用AJAX动态加载右列。有更好的选择吗?我可以这样做吗 编辑: 当用户想要编辑treeview的节点时,我不想重新加载整个页面。也许我需要在右边的专栏中添加一个UpdatePanel,不是吗?一般来说,这是可以做到的,而且使

我正在开发ASP.NET应用程序,并尝试执行以下操作:

我将只把一个ASPX页面分成两列。左列将是一个TreeView,右列将是编辑TreeView节点的内容

当用户可以在右侧列中选择要编辑的树视图节点时。根据节点的深度,右列上的字段将有所不同

例如,我想使用ASCX控件并使用AJAX动态加载右列。有更好的选择吗?我可以这样做吗

编辑:


当用户想要编辑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);
}