2011-10-14 20 views
0

我想提出一个ASTreeView网页控制在一个自定义Web控件,ASTreeView示例代码是这样的:.aspx的作品,但.ascx不...为什么以及如何解决?

<ct:ASTreeView ID="astvMyTree" 
        runat="server" 
        ... 
        LoadNodesProvider="~/ASTreeViewDemo5.aspx" 

        .../> 

LoadNodesProvider是加载一个节点时调用的页面的ajax ...但是如果我改变了提供给我.ascx文件,这是行不通的:

LoadNodesProvider="~/ASTreeViewDemo5.ascx" 

它甚至没有经过.ascx文件 的Page_Load中的一部分虽然这可能与astreeview本身有关,我想知道这个问题可能是什么?我能做些什么来解决它? 谢谢!

+0

你是什么意思“LoadNodesProvider是页面ajax调用...”什么是“页面ajax”?你的意思是它是ajax回调页面吗? –

+0

我对ajax不太熟悉......我看到的是,当我点击加载节点时,ajax将调用此LoadNodesProvider页面来“渲染”子节点... –

+0

好的,请参阅Tomas和Porco的答案。您不能使用用户控件作为回调页面。它正在做的是使用AJAX异步调用另一个页面,并且页面响应数据加载节点。您需要调用页面或Web服务。 –

回答

4

这是因为ascx必须有一个容器,即页面。你不能像页面一样使用它。

+0

好的。答案接受。我使用Page.Request.Url.GetLeftPart(UriPartial.Path)到达控件所在的aspx。 –

4

ASPX是一个页面,ASCX是一个用户控件。你不能ajax调用一个控件,所以你可能希望它成为一个带有控件的页面。

1

虽然它不完全清楚LoadNodesProvider应该做什么,但如果你想封装一些代码或通过AJAX运行一个进程,你有几个选项。其中一个就是创建一个Web服务(你可以使用WCF来实现这个),AJAX方法可以调用它。另一种选择是创建一个http处理程序(ASHX扩展通常表示这一点)。为此,使用ASPX或ASCX对我来说并没有什么意义。 Proco和Tomas对于ASCX文件是正确的,这些是Usercontrols并且不是独立的对象。

+0

但它看起来像aspx确实有道理?它无论如何工作... –

0

如果你确实想要使用ASPX页面/ ASCX控件,那么我想最好是创建一个空白的ASPX页面,它有一个占位符,然后附上你的用户控件(根据查询字符串参数或一些我猜)到占位符渲染出你的AJAX控件的内容

+0

即时通讯不知道什么控制你的意思,我的控制或astreeview控制(?)..我现在添加一个单独的页面作为提供者页面,但我需要使用asTreeView在.ascx中的一些方法。 ..所以我必须在这个aspx中创建另一个重复的asTreeView以获取该方法......它仍然存在错误,我认为现在的代码非常混乱......我感到很沮丧:-( –

+0

在ASPX页面中,你可以使用''来保存控件,然后在你的代码中,你可以像'plcControl.Controls.Add(new asTreeView())' (假设这是你的用户控件(ascx)) –

+0

......我明白你的意思了......它与我原来的目的不同......我需要把ascx放到不同的地方而不是aspx ......但是谢谢无论如何! –

相关问题