如何在ModalPopUp控制扩展程序代码执行之前执行DataBinding

时间:2012-04-19 02:53:42

标签: c# asp.net data-binding modalpopupextender

我将GridViewButton控件嵌套在Panel内。

<asp:Panel ID="PanelPopUp" runat="server">

    <asp:gridview ID="gvSource" runat="server" CellPadding="4" ForeColor="#333333" 
        GridLines="None">
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <EditRowStyle BackColor="#999999" />
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
    </asp:gridview>
    <asp:Button ID="OKButton" runat="server" Text="Close" /> 

</asp:Panel>

我希望在触发我的AJAX ModalPopUp Extender控件

时将此GridView显示为PopUp
<act:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="btnMock" PopupControlID="PanelPopUp" OkControlID="OKButton">

</act:ModalPopupExtender>

此弹出按钮触发此按钮:

<asp:Button ID="btnMock" runat="server" Text="Process" OnClientClick="document.getElementById('btnProcess').click();"/>

还有另一个按钮:

<asp:Button ID="btnProcess" runat="server" Text="" Style="visibility:hidden;" 
        onclick="btnProcess_Click" />

此按钮事件处理(在服务器端):

protected void btnProcess_Click(object sender, EventArgs e)
{
    //Basically populating data and bind it to GridView 
}

我的情况:

  1. ModalPopUp TargetControl 不会触发服务器端事件
  2. 所以没有点处理 TargetControlID btnMock)的事件,因为它永远不会被执行
  3. 所以我创建了另一个按钮btnProcess,其中处理了事件
  4. 该事件实际上是执行数据绑定到gvSource
  5. btnMock是模态扩展器的目标控件,也触发执行btnProcess
  6. 但是它不按我想要的顺序工作。因此,btnMock 会首先显示弹出窗口,然后只有* 才会显示btnProcess点击 * ed。
  7. 我的问题:

      

    在模态弹出控制器执行期间是否无法执行数据绑定?我尝试使用隐藏按钮的这种解决方法目前没有按正确的顺序工作。有人可以就此提出建议吗?

1 个答案:

答案 0 :(得分:1)

隐藏弹出式触发按钮:

<asp:Button ID="btnMock" runat="server" Text="" Style="visibility:hidden;"  />

显示另一个按钮,它将是模型弹出控制按钮,您需要处理如下所示的点击事件。

<asp:Button ID="btnProcess" runat="server" Text="Process" onclick="btnProcess_Click" />

protected void btnProcess_Click(object sender, EventArgs e)
{
    //Basically populating data and bind it to GridView 


    ModalPopupExtender1.Show();
}