小编C. *_*fin的帖子

ASP.NET:ModalPopupExtender可防止触发按钮单击事件

这是我正在尝试做的事:点击我页面上的一个按钮,这反过来使(2)事情发生:

  1. 显示ModalPopup以防止用户按任何按钮或更改值
  2. 调用我的代码隐藏方法,完成后隐藏ModalPopup

这是ASP标记:

<asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="true"
    UpdateMode="Always">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnSaveData" EventName="Click" />
    </Triggers>
    <ContentTemplate>
        <asp:Panel ID="pnlHidden" runat="server" style="display: none;">
            <div>
            <h1>Saving...</h1>
            </div>
        </asp:Panel>
        <cc1:ModalPopupExtender ID="modalPopup"
            BackgroundCssClass="modalBackground" runat="server"
            TargetControlID="btnSaveData" PopupControlID="pnlHidden"
            BehaviorID="ShowModal">
        </cc1:ModalPopupExtender>
        <asp:Button ID="btnSaveData" runat="server" Text="Save Data"
            OnClick="btnSaveData_Click" />
    </ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)

现在,这是我的C#代码背后的代码:

protected void btnSaveData_Click(object sender, EventArgs e)
{
   UpdateUserData(GetLoggedInUser());
   modalPopup.Enabled = false;
}
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?ModalPopup显示完美,但btnSaveData_Click事件永远不会触发.

更新: 第一个建议对我不起作用.我也尝试了你的第二个建议(只要它适用于我).我的一个小的区别是我的模态面板上没有按钮(pnlHidden) - 它只是一条消息.我确实尝试在客户端使用Javascript事件,这至少与我的服务器端事件并发.这是个好消息,但我似乎无法找到或获取ModalPopupExtender或其BehaviorID的句柄.这不起作用:

function showOverlay() {
    var popup = $find('modalPopup');
    popup.show();
}
Run Code Online (Sandbox Code Playgroud)

popup总是等于null.

最终更新: 这是我的最终解决方案(请特别注意使用OnClientClick和OnClick):

<asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="true"
UpdateMode="Always">
<Triggers>
    <asp:AsyncPostBackTrigger ControlID="btnSaveData" …
Run Code Online (Sandbox Code Playgroud)

c# asp.net ajax modalpopupextender

15
推荐指数
1
解决办法
6万
查看次数

PrintPreviewDialog修改可能吗?

目前,我正在做的是:

  1. 使用内置的.NET PrintPreviewDialog
  2. 将我自己的Click处理程序附加到Print按钮,允许用户在最终打印之前选择打印机.

这一切都工作,但OnprintToolStripButtonClick事件仍在将文档发送到默认打印机,然后用户选择实际的打印机并单击打印(这有效,但是他们首先从默认打印机上获得额外的副本处理程序).

我可以删除这个内置的Click处理程序吗?我已经尝试了这里提到的其他方法,关于使用EventHandlerList来删除处理程序,但它不适用于内置打印事件.以下是我当前代码的副本,以防有助于澄清:

// ... Irrelevant code before this
private PrintPreviewDialog ppdlg;

ToolStrip ts = new ToolStrip();
ts.Name = "wrongToolStrip";
foreach (Control ctl in ppdlg.Controls)
{
   if (ctl.Name.Equals("toolStrip1"))
   {
      ts = ctl as ToolStrip;
      break;
   }
}
ToolStripButton printButton = new ToolStripButton();
foreach (ToolStripItem tsi in ts.Items)
{
   if (tsi.Name.Equals("printToolStripButton"))
   {
      printButton = tsi as ToolStripButton;
   }
}
printButton.Click += new EventHandler(this.SelectPrinterAfterPreview);
// ... Irrelevant code afterwards omitted


// Here is the Handler for choosing a Printer …
Run Code Online (Sandbox Code Playgroud)

c# printing dialog preview

5
推荐指数
1
解决办法
6138
查看次数

Dynamics AX 2009:如何在Checkbox控件上以编程方式allowEdit

从本质上讲,这就是我面临的问题:

  1. 我想修改InventTrans表单
  2. 默认情况下,它将整个InventTrans数据源设置为AllowEdit = No.
  3. 我想在一个新的Enum字段上启用编辑(NoYes类型)

我应该将InventTrans数据源设置为AllowEdit = Yes然后痛苦地将数据源中的40多个字段更改为AllowEdit = No,或者有没有办法以编程方式迭代数据源的字段并按名称设置此属性?(请说有,或者同样简单的方法来做到这一点!)

提前致谢!

ax axapta dynamics-ax-2009

1
推荐指数
1
解决办法
8181
查看次数