在 AJAX 取得 PopupControlExtender 回傳的值 with UserControl

在一般的 PopupControlExtender 中要取得目前頁面元件回傳的值並不困難

詳細可以參考這篇文章
[KB]如果UpdatePanel有多個觸發來源,要怎麼將內容Post回去原觸發的控制項呢?

這邊列出重點程式碼


    Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) _
                                                        Handles DropDownList1.SelectedIndexChanged
        Dim tmppce As AjaxControlToolkit.PopupControlExtender
        tmppce = AjaxControlToolkit.PopupControlExtender.GetProxyForCurrentPopup(Page)
        tmppce.Commit(DropDownList1.SelectedValue.ToString())
    End Sub

可以發現回傳的值是寫在元件的事件觸發之中

可是如果我們是使用 UserControl 那該如何解決呢

很簡單,只要在 UserControl 中新增一個事件,並且於 UserControl 觸發該事件就可以了

感覺很像很複雜,其實不會,看程式或許會比較好了解一點

先建立一個 UserControl ,並且加入一個 TreeView 元件

<asp:TreeView ID="TreeView1" runat="server" BackColor="#66FFFF">
    <Nodes>
        <asp:TreeNode Text="測試1" Value="111111">
            <asp:TreeNode Text="測試1_1" Value="新節點"></asp:TreeNode>
        </asp:TreeNode>
        <asp:TreeNode Text="測試2" Value="222222222"></asp:TreeNode>
        <asp:TreeNode Text="測試3" Value="33333"></asp:TreeNode>
    </Nodes>
</asp:TreeView>

然後在 UserControl 中新增一個事件,且設定 TreeView 的 SelectedNodeChanged 會觸發該新增的事件

    Public Event UC_Event(ByVal srt As String)

    Protected Sub TreeView1_SelectedNodeChanged(ByVal sender As Object, ByVal e As EventArgs) _
                                            Handles TreeView1.SelectedNodeChanged
        RaiseEvent UC_Event(TreeView1.SelectedNode.Text)
    End Sub

接下來於主頁面中把該 UserControl 拉進來,然後新增程式於 UC_Event 事件中

  Private Sub UC1_UC_Event(ByVal srt As String) Handles UC1.UC_Event
        Dim tmppce As AjaxControlToolkit.PopupControlExtender
        tmppce = AjaxControlToolkit.PopupControlExtender.GetProxyForCurrentPopup(Page)
        tmppce.Commit(srt)
    End Sub

這樣子我們就有一個可以在 PopupControlExtender 放入 UserControl ,而且也可以有回傳值了

One thought on “在 AJAX 取得 PopupControlExtender 回傳的值 with UserControl

  1. 經同事告知,不用這麼麻煩
    只要在UserControl中元件的事件裡加入以下程就行了

    Dim tmppce As AjaxControlToolkit.PopupControlExtender
    tmppce = AjaxControlToolkit.PopupControlExtender.GetProxyForCurrentPopup(Page)
    tmppce.Commit(DropDownList1.SelectedValue.ToString())

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *