我有一个gridview,每行都有一个按钮。单击此按钮后,将打开Modal PopUp Extender面板(使用PanelName.Show())。 Panel包含一个用户控件,显示一些标签,文本框等。使用附加信息绑定表格SqlDataSource。在此之前它运作良好。但是,当我单击另一个按钮时,面板纯粹显示但内容未刷新(根据单击的按钮,应显示一些详细信息)。基本上,只为显示但不再显示的面板弹出窗口调用方法SqlDataSource_Selecting。
如何在每个PanelName.Show()后强制面板刷新(重新加载)?
提前致谢。
答案 0 :(得分:1)
如果我正确理解您的问题,我认为问题是您只需在用户单击按钮更改“选定”项后重新绑定数据绑定控件。您可以使用[ControlName].DataBind()
来执行此操作。这有意义吗?
答案 1 :(得分:0)
这取决于您要刷新的控件是否为DataBound()
。
换句话说,您是否可以使用DataBind()
方法调用来强制控件重新加载,以强制控件重新加载自身,使用相同或新数据?
大多数GUI控件都使用DataBind()
方法,但如果控件实际上没有使用数据,那么它就没用了!
这就是为什么在您的情况下,您的面板不会刷新"使用新数据,因为在面板上使用DataBind()不会做任何事情。在整个GridView上使用数据绑定()是一个不同的故事,应该可以工作。也许在整个地方放置一个UPDATEPANEL?如果你这样做,你必须小心你的正常编辑和行上的其他命令将继续工作。
但,您可以做的是将modalpopupextender
放入TemplateField
,并使用"技巧",您可以保留您的服务器帖子支持并仍然弹出弹出式面板。
即
<asp:UpdatePanel ID="upADDMAIN" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="btnADD" runat="server" Text="NEW LOGIN" BackColor="Blue" Font-Bold="True" ForeColor="#FFFFCC" OnClick="btnADD_Click" />
<asp:Button ID="btnDUM" runat="server" style="display:none" />
<div style="height:20px">
</div>
<ajaxToolkit:ModalPopupExtender ID="mpeADD" runat="server"
targetcontrolid="btnDUM"
popupcontrolid="upADD"
backgroundcssclass="modelbackground">
</ajaxToolkit:ModalPopupExtender>
<asp:UpdatePanel ID="upAdd" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel ID="pnlADD" runat="server" Width="700px" HorizontalAlign="Center" CssClass="auto-style10" Height="200px">
..
..
<div id="puFTR" class="auto-style17" style="vertical-align: middle">
<asp:Button id="btnOK" runat="server" Text="OK" style="width: 80px" OnClick="btnOK_Click" />
<asp:Button id="btnCAN" runat="server" Text="CANCEL" style="width: 80px" OnClick="btnCAN_Click" CausesValidation="False" />
</div>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</asp:UpdatePanel>
正如您所看到的,btnDUM
控件是Dummy以使MPE正常工作,但它实际上并未被style="display:none"
标记隐藏。
但是,btnADD
确实有效,因为它在服务器端调用Click()
方法,用于刷新新行上的数据。您可能必须使用一点jScript将ROWINDEX
传递给Click()方法,以使其与GridView
一起使用。
顺便说一句,我的案例中的Click()方法&#34;控制&#34;手动MPE ......
protected void btnADD_Click(object sender, EventArgs e)
{
ClearADDform();
mpeADD.Show();
}
protected void ClearADDform()
{
txtLOGIN.Text = string.Empty;
cbISActive.Checked = true;
txtPWD.Text = string.Empty;
ddlAgent.SelectedIndex = -1;
}
就我而言,上面的代码示例位于GridView之外,因此您需要进行调整。
但问题是,您仍然可以使用Ajax弹出窗口进行服务器端调用!
祝你好运。