2011-10-14 23 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 ......但是謝謝無論如何! –

相關問題