如何在客户端

时间:2015-12-11 20:40:05

标签: javascript devexpress

我正在使用devExpress 11.2和ASP.NET 4.0。请耐心等待冗长的问题描述。

我创建了一个包含ASPxPopupControl的用户控件(ID =" myPopup")

        <dx:ASPxPopupControl ID="myPopup" runat="server" ... </dx:ASPxPopupControl>

和其他控件。我还实现了一个公共方法ShowPopup(),在其中执行myPopup.ShowOnPageLoad = true以显示此弹出窗口。然后在我的ASPX页面中注册并引用此用户控件。我将此用户控件放入ASPxRoundPanel中的表格单元格中,ID =&#34; myUC&#34;

在这个页面中,我有一个ASPxGridView,我在其中创建了一个自定义命令按钮,如下所示:

<dx:GridViewCommandColumn  VisibleIndex="0" Width="30px" Caption="" ButtonType="Image">
    <CustomButtons>
       <dx:GridViewCommandColumnCustomButton ID="cmd">
           <Image Url="~/Images/OK.png" />
       </dx:GridViewCommandColumnCustomButton>
    </CustomButtons>
</dx:GridViewCommandColumn>

ClientSideEvents定义为

<ClientSideEvents BeginCallback="OnDevExpressBeginCallback" EndCallback="OnDevExpressEndCallback">

单击此图像按钮时,我想弹出用户控件。请注意,此ASPxGridView还提供插入/编辑/删除功能。

有两种方法可以解决这个问题。

1为了确保ASPxGridView正确处理其内置命令(Insert等),我需要设置EnableCallBacks="True"然后设置OnCustomButtonCallback="OnmyASPxGridView_CustomButtonCallback"来处理代码中的图像按钮的单击事件背后。我从后面的代码调用myUC.ShowPopup()并调试到这里。但是,弹出窗口未显示。如果我设置EnableCallBacks="False",那么弹出窗口就会显示出我的预期。

这种方法的问题是不可接受的,因为内置命令无法正常工作。所以问题是如何在EnableCallBacks="True"期间从代码后面的用户控件中显示弹出控件?

2第二种方法是从客户端显示弹出窗口。 我首先设置EnableCallBacks="True"以确保我的内置命令正常工作。然后我将ClientSideEvents定义为

<ClientSideEvents BeginCallback="OnDevExpressBeginCallback" EndCallback="OnDevExpressEndCallback" CustomButtonClick="jsfnShowPopUpControl"/>

并删除了OnCustomButtonCallback事件。

我实现了javascript函数jsfnShowPopUpControl,如下所示:

function jsfnShowPopUpControl(s, e) {
    // next, find access control inside user control
    **var myPopupName = document.getElementById('<%=myUC.FindControl("myPopup").ClientID %>');**

    if (myPopupName != null) {
        myPopupName.Show();
        myPopupName.PerformCallback(e);
    }
    else {
        alert("Data error encountered"); // cannot find popup
        return; //  
    }}

这种方法的关键部分是找到驻留在用户控件中的devexpress弹出控件。不幸的是,getElementById函数无法在我的用户控件中找到底层控件,因此也没有显示弹出窗口。

请帮助我,让我知道我在两种不同方法中做错了什么。

非常感谢。

1 个答案:

答案 0 :(得分:0)

参考这些 - Showing a DevExpress AspxPopUpControl when user clicks a button

How to show ASPxPopupControl's window on the client side

要解决此问题,建议您使用ASPxClientPopupControl.ShowWindow方法。

  

对于同样的scanerio,你想要实现我所做的。   将ClientInstanceName属性分配给页面上的某个唯一名称   包括用户控件现在您可以随意在任何地方访问该对象   在html中通过javascript。

让您将弹出窗口的ClientInstanceName设置为“MainASPxClientPopupControl”。因此,应该可以在您的主页上使用它,如下所示:

MainASPxClientPopupControl.Show();

关于此主题的参考:ASPxPopupControl - Cannot get an instance of the popup from a page