我在RadAjaxManager中使用了几个设置。我有一个服务器控件asp按钮,点击时重新加载整个页面。为了防止我将此设置放在RadAjaxManager
中<telerik:AjaxSetting AjaxControlID="btnPrint">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="btnPrint" LoadingPanelID="RadAjaxPanel"/>
</UpdatedControls>
</telerik:AjaxSetting>
但由于某种原因,我点击事件后面的代码不会触发。有任何想法
<telerik:RadAjaxPanel ID="RadAjaxPanel" PostBackControls="btnPrint" runat="server">
<div class="grid-wrapper" id="subcodeDiv" style="padding: 0px; margin-top: 20px; margin-left: 0; margin-right: 0px; width: 1160px; float: left; overflow: hidden">
<table class="subcodesdata">
<tr>
<td>
<asp:Button ID="btnPrint" runat="server" Text="Print" CssClass="button" OnClick="btnPrint_Click" ></asp:Button>
</td>
</tr>
</table>
</div>
</telerik:RadAjaxPanel>
答案 0 :(得分:0)
问题在于您将RadAjaxManager
和RadAjaxPanel
同时应用于同一个按钮,这是错误的,也是不必要的。你只需要在这里选择其中一种方法。
请尝试以下工作代码示例。单击“打印”按钮1时,文本将加载到span
标记中并显示在屏幕上,而不会刷新页面。它也适用于打印按钮2。
RadAjaxPanel 方法
<telerik:RadAjaxPanel runat="server" ID="rap" PostBackControls="btnPrint2">
<div class="grid-wrapper">
<table class="subcodesdata">
<tr>
<td>
<asp:Button ID="btnPrint2" runat="server" Text="Print 2" CssClass="button" OnClick="btnPrint2_Click"></asp:Button>
<br />
<span runat="server" id="span2"></span>
</td>
</tr>
</table>
</div>
</telerik:RadAjaxPanel>
protected void btnPrint2_Click(object sender, EventArgs e)
{
span2.InnerHtml = "Print button 2 clicked...";
}
RadAjaxManager 方法
<telerik:RadAjaxManager ID="ram" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="btnPrint1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="subcodeDiv" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<div class="grid-wrapper" id="subcodeDiv" runat="server">
<table class="subcodesdata">
<tr>
<td>
<asp:Button ID="btnPrint1" runat="server" Text="Print 1" CssClass="button" OnClick="btnPrint1_Click"></asp:Button>
<br />
<span runat="server" id="span1"></span>
</td>
</tr>
</table>
</div>
protected void btnPrint1_Click(object sender, EventArgs e)
{
span1.InnerHtml = "Print button 1 clicked...";
}
答案 1 :(得分:0)
尽管这里是一个旧线程,但如果仍有其他人在挣扎,它将解决。这里的问题是您不能让按钮本身进行更新。可以,但是您的页面将无法按预期工作。相反,该按钮应更新辅助控件。每次单击使按钮进行更新时,它只会重置自身,因此永远不会触发服务器端功能。
这是正确的方法:
<telerik:RadScriptManager runat="server" ID="RadScriptManager1" />
<telerik:RadAjaxManager ID="ajaxmanager1" runat="server" EnableAJAX="true">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="btnPrint">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="subcodeDiv" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
但是,我不确定Telerik控件是否会更新 div 。我知道它们可以与控件配合使用,但不能与divs配合使用。
即使如此,我也认为该按钮不应位于您要更新的div内。
无论如何,如果上面的示例不起作用,请尝试以下下面的示例。它肯定会工作-请注意,我用标签控件替换了div:
<telerik:RadScriptManager runat="server" ID="RadScriptManager1" />
<telerik:RadAjaxManager ID="ajaxmanager1" runat="server" EnableAJAX="true">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="btnPrint">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="label1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<asp:Button ID="btnPrint" runat="server" Text="Print" CssClass="button" OnClick="btnPrint_Click" ></asp:Button>
<asp:label autopostback="true" id="label1" runat="server" visible="true"></asp:label>