显示模式弹出扩展器时父页面的部分页面刷新 [英] Partial Page refresh of Parent Page when Modal Pop Up Extender shown

查看:77
本文介绍了显示模式弹出扩展器时父页面的部分页面刷新的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,

我有一个aspx页面,并且在aspx页面上注册了一个用户控件ascx页面.
我正在将ascx页面显示为模式弹出窗口.在ascx页面上,我有一个网格视图,一个按钮(提交)和一个按钮(关闭).
当我从网格视图中选择一种产品并单击模式弹出窗口的Submit按钮时,我想在父页面上显示具有所选值的网格视图,但不想刷新整个页面.我该如何实现?

我在网格视图中获取值,并且网格视图显示在父页面上,但是整个父页面都已发回.如何避免完整回发,而仅动态创建的网格视图将显示在父aspx"页面上?
下面是代码..

Aspx:

Hi All,

I have an aspx page and an user control ascx page is registered on the aspx page.
I am displaying ascx page as a modal pop up. On ascx page i have one grid view, One button (Submit),and one button (Close).
When i select a product from grid view and click on Submit button of modal Popup then i want to show a grid view on parent page with the selected value but do not want to refresh whole page. How can i achive this?

I am getting the values in grid view and grid view is shown on parent page but whole parent page getting post back. how can i avoid the full post back and only dynamic created grid view will be shown on Parent aspx page?
Below is the code..

Aspx:

<asp:Panel ID="Panel1" runat="server"  CssClass="BackgroundCSS"

            Style="width: 1000px; height: 500px; border: 1px solid yellow; display:none">
       <uc:userControl ID="WebUserControl1" runat="server" />

   </asp:Panel>
   <asp:HyperLink ID="HyperLink1" runat="server">HyperLink</asp:HyperLink>

   <asp:ModalPopupExtender ID="Button1_ModalPopupExtender" runat="server" DropShadow = "true"

       DynamicServicePath="" Enabled="True" TargetControlID="HyperLink1" PopupControlID="Panel1">
   </asp:ModalPopupExtender>




ascx:




ascx:

<asp:GridView ID="grv" runat="server"  AutoGenerateColumns="False"

        BackColor="White" BorderColor="#CC9966" BorderStyle="None"

        BorderWidth="1px" CellPadding="4" Font-Names="Verdana"

                >
        <Columns>
        <asp:TemplateField HeaderText="Select">
           <ItemTemplate>
           <asp:CheckBox ID="chkbSelectSearch" runat="server"/>
                                    </ItemTemplate>
          <%--  <ItemTemplate>
            <asp:Label ID = "lblRadioButton" runat = "server" Text = '<%#Eval("Id")%>'></asp:Label>
            </ItemTemplate>--%>
        </asp:TemplateField>
             <asp:BoundField DataField = "Id" HeaderText="Id"/>
             <asp:BoundField DataField = "Name" HeaderText="Name"  />
        </Columns>
        </asp:GridView>
 <tr>
        <td><asp:Button ID="Submit" runat="server" Text="Submit"

                onclick="Submit_Click"/></td>
        <td><asp:Button ID="Close" runat="server" Text="Close"



ascx.cs



ascx.cs

protected void Submit_Click(object sender, EventArgs e)
Panel p = (Panel)this.Parent.Parent.FindControl("pnl");
           UpdatePanel up = new UpdatePanel();

           GridView gv = new GridView();
           gv.DataSource = ds;
           gv.DataBind();
           p.Controls.Add(gv);
           p.Height = new Unit(500);
           p.Visible = true;

推荐答案

将网格放置在父页面的UpdatePanel中. 在模型弹出窗口中单击选择按钮,创建一个委托,以处理父页面中的委托事件并更新Updatepanel和网格.要更新您的Updatepanel,请使用 UpdatePanel.Update方法 [ ^ ].


--Amit
Place your grid in the UpdatePanel in the parent page.
Create a delegate, on click of the select button from your model popup handle the event of the delegate in your parent page and Update your Updatepanel and grid. To update your Updatepanel use UpdatePanel.Update Method[^].


--Amit


将aspx代码沿着您要从用户控件中填充数据的网格视图沿着网格视图放置在更新面板中.


示例:

Aspx页面:


Place the aspx code inside an update panel along the gridview to which you want to populate the data from user control.


Example:

Aspx page:


<div>
        <asp:Label ID="lblParent" runat="server"></asp:Label>
        <asp:ScriptManager ID="sm" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="up" runat="server">
            <ContentTemplate>
                <asp:Label ID="lblInner" runat="server"></asp:Label>
                <asp:Panel ID="Panel1" runat="server" CssClass="BackgroundCSS" Style="width: 110px;
                    height: 100px; border: 1px solid yellow; display: none">
                    <uc1:PopUp1 ID="PopUp11" runat="server" />
                </asp:Panel>
                <asp:HyperLink ID="HyperLink1" runat="server">HyperLink</asp:HyperLink>
                <ajaxToolkit:ModalPopupExtender ID="Button1_ModalPopupExtender" runat="server" DropShadow="true"

                    DynamicServicePath="" Enabled="True" TargetControlID="HyperLink1" PopupControlID="Panel1">
                </ajaxToolkit:ModalPopupExtender>
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>


ASPX.cs


ASPX.cs

protected void Page_Load(object sender, EventArgs e)
{
   lblParent.Text = DateTime.Now.ToString();
}



用户控件



Usercontrol

<asp:Button ID="Submit" runat="server" Text="Submit" OnClick="Submit_Click" /></td>
<asp:Button ID="Close" runat="server" Text="Close" />





protected void Submit_Click(object sender, EventArgs e)
{
       Label lblInner = (Label)this.Parent.Parent.FindControl("lblInner");
       lblInner.Text = DateTime.Now.ToString();
}




父页面不会刷新.只有带有更新面板的零件才会被刷新.

输出将是




The parent page wont be refreshed. Only the part withing update panel will get refreshed.

The output will be

07/08/2012 12:45:59
07/08/2012 12:46:06 HyperLink


这篇关于显示模式弹出扩展器时父页面的部分页面刷新的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆