【问题标题】:Refreshing an UpdatePanel inside of a modal popup在模式弹出窗口中刷新 UpdatePanel
【发布时间】:2014-05-28 09:36:47
【问题描述】:

显然我做错了什么,只是不确定是什么...... 我有一个模式弹出窗口,里面是一个更新面板,它又包含一个网格视图。当第一次调用模式弹出窗口时,我想刷新 UpdatePanel(和网格数据)。

我有代码工作,以便在按下按钮时更新面板 btnHiddenJSRefresh(当前未隐藏)。但是如果不按下按钮,我就无法让它工作!

我尝试通过 Jquery “单击”按钮 $("").click(); 我可以看到它被调用了,但是页面上没有任何反应。 与 __doPostBack("", "");

相同

另外(这可能是无关的)gridview 中的删除选项在这里不起作用。在 UpdatePanel 之外它工作正常......

这是代码,我已尝试将其简化为主要问题

<ajaxact:modalpopupextender id="ModalPopupExtender1" runat="server"
cancelcontrolid="ClosePopup" okcontrolid="ClosePopup"
targetcontrolid="hidenSelectedDoc" popupcontrolid="THolder"
popupdraghandlecontrolid="PopupHeader" drag="true" BehaviorID="MPE" Y="0" backgroundcssclass="ModalPopupBG">

<div classs="ModalPopup" id="THolder" >
    <a id="ClosePopup" href="#">Close</a>
    <asp:Button ID="btnHiddenJSRefresh" runat="server" Text="Button" UseSubmitBehavior="false" OnClick="btnAddTag_Click" />

    <asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional" OnLoad="UpdatePanel2_Load" >

        <ContentTemplate>            
    <asp:GridView ID="gvPageTags" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSourcePageTags"  CssClass="TableDataHolder" DataKeyNames="CarID" >
                        <Columns>
                            <asp:BoundField DataField="FullName" HeaderText="Full Name" SortExpression="FullName" />                               
                            <asp:TemplateField HeaderText="Delete">
                                <ItemTemplate>                                           
                                        <asp:ImageButton ID="deleteButtonImg" runat="server" CommandName="Delete" Text="Delete" OnClientClick="return confirm('Are you sure you want to delete this car?');" ImageUrl="~/images/icons/DeleteIconS.png" AlternateText="Delete" />
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>                             
                    </asp:GridView>
        </ContentTemplate>
    </asp:UpdatePanel>

    <asp:SqlDataSource ID="SqlDataSourcePageTags" runat="server"
                    ConnectionString="<%$ ConnectionStrings:bobConnectionString %>"
                    SelectCommand="SELECT * FROM Cars WHERE (cMake = @cMake)"
                    DeleteCommand="DELETE * FROM Cars WHERE CarID = @CarID">                       
                    <SelectParameters>
                        <asp:Parameter Name="cMake" DefaultValue="0" Type="int32" />
                    </SelectParameters>
                </asp:SqlDataSource>

    </div>           

后面的代码

protected void btnAddCar_Click(object sender, EventArgs e)
    {
        SqlDataSourcePageTags.SelectParameters["cMake"].DefaultValue = hidenSelectedcMake.Value;
        SqlDataSourcePageTags.DataBind();
        gvPageTags.DataBind();
        UpdatePanel2.Update();
    }

任何想法都会很棒。

谢谢

【问题讨论】:

    标签: c# asp.net gridview updatepanel modalpopupextender


    【解决方案1】:

    拥有代码片段中引用的所有页面代码会更有帮助。同时,我尝试根据您的描述模拟此功能,所以如果我误解了某些内容,请纠正我。

    在页面加载时,我添加了一个 javascript 块来检查它是否是回发。如果不是,那么我调用一次按钮的 (btnHiddenJSRefresh) 单击事件来刷新模态。另外,我添加了一个按钮来弹出模式窗口,请参阅我的代码示例。最后,删除选项在本例中运行良好。

     <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
    
     <form id="form1" runat="server">
    
    <asp:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Release">
                    <Scripts>
                        <asp:ScriptReference Path="resources/jquery-1.11.0.js"/>
                    </Scripts>
    </asp:ScriptManager>
    
     <script type="text/javascript">
    
         $(document).ready(function () {
             var chkPostBack = '<%= Page.IsPostBack ? "true" : "false" %>';             
    
             if ( !Boolean.parse(chkPostBack) ) {                
                 __doPostBack("<%= btnHiddenJSRefresh.ClientID %>", "");
             }
         });
    </script>  
    
    
    <asp:Button ID="shwmodal" runat="server" Text="show modal" 
        onclick="shwmodal_Click" />
    
    <div classs="ModalPopup" id="THolder" >
    
    
    <a id="ClosePopup" href="#">Close</a>
    
    
    
    <asp:Button ID="btnHiddenJSRefresh" runat="server" Text="Button" style="display:none" OnClick="btnAddTag_Click" />
    
    
    
    <asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional" 
    OnLoad="UpdatePanel2_Load" >
    
        <ContentTemplate>            
    <asp:GridView ID="gvPageTags" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSourcePageTags"  CssClass="TableDataHolder" DataKeyNames="RoleID" >
                        <Columns>
                            <asp:BoundField DataField="Descr" HeaderText="Descr Name" SortExpression="Descr" />                               
                            <asp:TemplateField HeaderText="Delete">
                                <ItemTemplate>                                           
                                        <asp:ImageButton ID="deleteButtonImg" runat="server" CommandName="Delete" Text="Delete" OnClientClick="return confirm('Are you sure you want to delete this car?');" ImageUrl="~/images/icons/DeleteIconS.png" AlternateText="Delete" />
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>                             
                    </asp:GridView>
        </ContentTemplate>
    </asp:UpdatePanel>
    
    <asp:SqlDataSource ID="SqlDataSourcePageTags" runat="server"
                    ConnectionString="<%$ ConnectionStrings:bobConnectionString %>"
                    SelectCommand="SELECT * FROM testRoles WHERE (RoleId = @cMake)"
                    DeleteCommand="DELETE FROM testRoles WHERE RoleId = @RoleId">
    
                    <SelectParameters>
                        <asp:Parameter Name="cMake" DefaultValue="0" Type="int32" />
                    </SelectParameters>
                </asp:SqlDataSource>
    
    </div>           
    
    
     <cc1:ModalPopupExtender id="ModalPopupExtender1" runat="server"
        cancelcontrolid="ClosePopup" okcontrolid="ClosePopup"
        targetcontrolid="hidenSelectedDoc" popupcontrolid="THolder"
        popupdraghandlecontrolid="PopupHeader" drag="true" BehaviorID="MPE" Y="0" backgroundcssclass="ModalPopupBG">       
        </cc1:ModalPopupExtender>
         <asp:Button runat="server" 
            ID="hidenSelectedDoc" 
            style="display:none"/> 
    
    
    
    </form>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-26
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      • 2016-08-02
      • 2012-07-09
      • 2011-05-15
      相关资源
      最近更新 更多