问题描述
TL;DR
按钮 btnAfdrukVoorbeeld 需要在单击 1 次后禁用,并在下载文件后重新启用,但不会触发 OnClientClick。我认为 `UpdatePanel` 阻止了这一点。删除“触发器”不起作用,因为没有回发。 尝试使用 js `__doPostBack("test","")` 但在 `PageLoad()` 中显示为空 禁用内联按钮 `OnClientClick="this.disabled = true;"` 有效,但会阻止触发 `OnClick`,因此这不是一个选项。建议?
普通帖子:
我一直在尝试防止在使用 javascript 下载文件的按钮上出现双击可能性。不幸的是,到目前为止我没有成功,因为我正在写这个问题。
在我看来应该相对简单,但是 <asp:UpdatePanel>
上带有 trigger postback
的 button
阻止了 onClientClick
被触发,因此我的 JS 函数不是调用。
OnClick
函数正在被触发,所以没有问题。
我也试过这样的内联:OnClientClick="this.disabled=true;"
但这可以防止 OnClick
事件被触发,这是(我后来了解到的)预期的。
也一直在摆弄 UpdatePanel
和 triggers
,禁用它们或将 UpdatePanel Condition
更改为 always
但这并没有产生积极影响。
尝试使用 js __doPostBack("test","")
但在 PageLoad()
...
想要的效果是按钮在单击后被禁用,事件被触发,因此页面下载为 pdf 并再次启用按钮。
我的第一个想法是使用 JS 禁用按钮,然后在“后端”重新启用它。 按钮:
<asp:Button ID="BtnAfdrukVoorbeeld" Visible="true" runat="server" ClientIDMode="Static"
OnClick="ButtonAfdrukVoorbeeld_Click" OnClientClick="processafhandelen"
CssClass="ZAButton button_phone_bottom" Text="afdrukvoorbeeld" />
我的 J:
function processafhandelen() {
console.log('procesAfhandelen');
var go_on = false;
var imgSwirl = document.getElementById("<%= pnlSwirl.ClientID%>");
var btnAfdr = document.getElementById('BtnAfdrukVoorbeeld');
console.log(imgSwirl);
console.log(btnAfdr);
btnAfdr.disabled = true;
if (imgSwirl.style.visibility == "visible") {
//alert("Verzoek is al verzonden....,even geduld a.u.b!");
return false;
}
else {
console.log('disable btnAfdr')
go_on = true;
btnAfdr.disabled = false;
showSwirl();
}
return go_on;
}
function showSwirl() {
var imgSwirl = document.getElementById("<%= pnlSwirl.ClientID%>");
if (imgSwirl) {
imgSwirl.style.visibility = "visible";
imgSwirl.style.display = "block";
}
}
更新面板:
<asp:Panel ID="Panel2" CssClass="DocumentOutPanelTextEditor DeleteTop" runat="server">
<asp:UpdatePanel ID="updPanel2" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div id="divEditor" style='border: 0px groove #C0C0C0; width: 100%' runat="server">
<telerik:RadPageLayout ID="RadPageLayout2" CssClass="desktoppagelayout formulieren" runat="server" GridType="Fluid" ShowGrid="false">
<Rows>
<telerik:LayoutRow>
<Columns>
<telerik:LayoutColumn ID="LayoutColumn3" runat="server" Span="12">
<div class="clear"></div>
</telerik:LayoutColumn>
</Columns>
</telerik:LayoutRow>
<telerik:LayoutRow>
<Columns>
<telerik:LayoutColumn ID="LayoutColumn6" runat="server" Span="12">
<input id="varUnsaved" type="hidden" name="varUnsaved" runat="server" />
<telerik:RadAjaxManager ID="ramCorr" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="UDPCorrUitgaand">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="pnlButtonsCorr" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<asp:Panel ID="pnlCorrUitgaand" Height="80%" Width="100%" runat="server">
<asp:UpdatePanel ID="UDPCorrUitgaand" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<%--<telerik:RadEditor ID="RadEditorCorrUitgaand" runat="server" Skin="Office2010Silver" EditModes="All"
EnableResize="False" ToolsFile="~/App_Data/RadEditor/ToolsFile_CU.xml" Width="100%" Height="1150px"
OnClientLoad="onClientLoad" OnClientPasteHtml="OnClientPasteHtml" OnClientCommandExecuting="OnClientCommandExecuting">
<Content>
</Content>
</telerik:RadEditor>--%>
<script type="text/javascript" src="js/scriptradeditor.js"></script>
<script type="text/javascript">
TelerikDemo.rwUploadId = "<%=RadWindow1.ClientID%>";
TelerikDemo.rnMessagesId = "<%=RadNotification1.ClientID%>";
TelerikDemo.reId = "<%=RadEditorCorrUitgaand.ClientID%>";
</script>
<div class="container no-bg">
<telerik:RadEditor
ID="RadEditorCorrUitgaand" runat="server" ToolbarMode="RibbonBar" Style="width: 875px; min-height: 1000px; height: 1000px"
EnableTrackChanges="true" EnableComments="true" ToolsFile="~/App_Data/RadEditor/word-like-tools-corr.xml"
EditModes="All" OnClientLoad="onClientLoadCorr" OnClientCommandExecuting="OnClientCommandExecuting" Language="nl-NL"
ImageManager-MaxUploadFileSize="512000" ExternalDialogsPath="~/App_Data/RadEditor/EditorDialogs">
<TrackChangesSettings CanAcceptTrackChanges="true" />
<DocumentManager ViewPaths="~/Files" UploadPaths="~/Files" />
<SpellCheckSettings DictionaryLanguage="nl-NL" />
<ExportSettings OpenInNewWindow="true" />
<ImageManager EnableAsyncUpload="False" EnableImageEditor="True" ContentProviderTypeName="FileStorageContentProvider,App_CODE" ViewMode="Grid" SearchPatterns="*.gif,*.jpg,*.jpeg,*.png,*.bmp" />
<Content></Content>
</telerik:RadEditor>
</div>
<telerik:RadWindow ID="RadWindow1" runat="server" Title="Upload File" Behaviors="Close,Move" VisibleStatusbar="false" AutoSize="true">
</telerik:RadWindow>
<telerik:RadNotification ID="RadNotification1" runat="server" Width="350px" Height="150px" Title="An error occured" TitleIcon="warning"
ContentIcon="info" Position="Center" AutoCloseDelay="5000" EnableRoundedCorners="true" EnableShadow="true">
</telerik:RadNotification>
<asp:HiddenField ID="RadFont" runat="server" />
<asp:Image ID="imgProgress" runat="server" ImageUrl="~/Images/loading_small.gif" />
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
</telerik:LayoutColumn>
</Columns>
</telerik:LayoutRow>
</Rows>
</telerik:RadPageLayout>
<telerik:RadPageLayout ID="RadPageLayout3" CssClass="desktoppagelayout knoppen footerPhone" runat="server" GridType="Fluid" ShowGrid="false">
<Rows>
<telerik:LayoutRow Style="margin-top: 10px">
<Columns>
<telerik:LayoutColumn Span="5">
<asp:CheckBox ID="chkVergrendelen" runat="server" /><asp:Label Text="vergrendelen" runat="server" CssClass="label" />
</telerik:LayoutColumn>
<telerik:LayoutColumn ID="LayoutColumn7" runat="server" Span="6" Style="padding-left: 53px" CssClass="desktopcontainer-buttons">
<asp:Panel ID="pnlButtonsCorr" runat="server" Visible="true">
<div id="divfoutmeldingen" class="divfoutmeldingen" runat="server" style="width: 100%;">
<asp:Panel ID="PanelFout" Visible="false" runat="server" CssClass="error">
<asp:Button ID="imgerrormelding" runat="server" CssClass="spritebase-no-block sprite-error" disabled />
<asp:Label ID="lblError" ForeColor="Red" runat="server" Visible="true"></asp:Label>
</asp:Panel>
<asp:Panel ID="PanelOpgeslagen" Visible="false" runat="server" CssClass="success">
<asp:Button ID="imgmelding" runat="server" CssClass="spritebase-no-block sprite-success" disabled />
<asp:Label ID="lblOpgeslagenBericht" runat="server" Text="De gegevens zijn opgeslagen." />
</asp:Panel>
</div>
</asp:Panel>
<asp:Button ID="btnVerwijderen" Visible="true" runat="server" zafunction="delete"
OnClick="btnVerwijderen_Click" CssClass="ZAButton button_phone_bottom" Text="verwijderen" />
<asp:Button ID="btnAnnuleren" Visible="true" runat="server"
OnClick="btnAnnuleren_Click" CssClass="ZAButton button_phone_bottom" Text="annuleren" />
<asp:Button ID="BtnAfdrukVoorbeeld" Visible="true" runat="server" ClientIDMode="Static"
OnClick="ButtonAfdrukVoorbeeld_Click" OnClientClick="processafhandelen" CssClass="ZAButton button_phone_bottom" Text="afdrukvoorbeeld" />
<asp:Button ID="btnOpslaanDoorgaan" zafunction="save" Visible="true" runat="server"
OnClick="btnOpslaanDoorgaan_Click" CssClass="ZAButton button_phone_bottom" Text="opslaan" />
<asp:Panel runat="server" ID="pnlSwirl" style="visibility:hidden;">
<asp:Image ID="imgSwirl" runat="server" ImageAlign="Right" ImageUrl="~/Images/loading_small.gif"/> Even geduld a.u.b.
</asp:Panel>
</telerik:LayoutColumn>
</Columns>
</telerik:LayoutRow>
</Rows>
</telerik:RadPageLayout>
</div>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="BtnAfdrukVoorbeeld" />
</Triggers>
</asp:UpdatePanel>
</asp:Panel>
C#:
protected void ButtonAfdrukVoorbeeld_Click(object sender,EventArgs e)
{
Patient patient = (Patient)Session["Patient"];
Relatie relatie = null;
if (patient == null)
{
patient = new Patient(SessionObject.XPSession);
}
radWindowManagerEmail.Windows.Clear();
Sjabloon sjabloon = null;
if (DropDownListSjabloon.SelectedValue != "0")
{
sjabloon = SessionObject.XPSession.FindByKey<Sjabloon>(Convert.ToInt32(DropDownListSjabloon.SelectedValue));
}
string nieuweContent = RadEditorCorrUitgaand.Content;
if (sjabloon != null && sjabloon.Groep.Velden != null)
{
string[] sjabloonvelden = sjabloon.Groep.Velden.Split(new char[] { ';' });
foreach (string veld in sjabloonvelden)
{
//**Do stuff**
}
string dir = Utils.GeefDataFolderNaam(true,@"Documenten\Uitgaand\");
string FileDownloadName = "afdrukvoorbeeld";
Gebruiker gebruiker = (Gebruiker)Session["Gebruiker"];
Utils.createPDFNoFile(nieuweContent,FileDownloadName);
updPanel2.Update();
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)