【问题标题】:The ScriptManager alert does not show even when having a ScriptManage control in aspx page即使在 aspx 页面中有 ScriptManage 控件,ScriptManager 警报也不会显示
【发布时间】:2013-11-12 22:58:34
【问题描述】:

我的 aspx 页面中有一个 Devexpress GridView gv 来显示和管理所有帐户。

<asp:ScriptManager ID="ScriptManager1" runat="server"/>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
 <ContentTemplate>
<dx:ASPxGridView ID="gv" runat="server"
        AutoGenerateColumns="False"  
        GridLines="None"  
        AllowPaging="true"  
        CssClass="mGrid" > 
        <SettingsBehavior AllowSelectByRowClick="True" AllowSelectSingleRowOnly="True"/>
     <Styles>
          <Header BackColor="#4FC9C4" Font-Bold="True" ForeColor="White"></Header>
      </Styles>

</dx:ASPxGridView>
 </ContentTemplate>
</asp:UpdatePanel>

Gridview 的每一行都有一个命令按钮Delete,允许管理员删除除Admin 帐户之外的任何帐户。

看看后面的代码:

  protected void grid_InitDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
    {
                //...get username value from e
                if(username=="Admin")
                {
                    e.Cancel = true;
                    gv.CancelEdit();
                    string script = "alert('Cannot delete Admin account');";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "alert", script, true);
                    return;
                } 
               else 
                 {
                     ...delete account
                 }

     }

当我构建此页面并单击管理员帐户中的“删除”按钮时--> 没有像我预期的那样显示警报。

尝试调试,程序命中if 语句中的所有行(包括string script = "alert('Cannot delete Admin account');";)然后执行return

我真的不知道为什么那里没有显示警报???

求救!!!

【问题讨论】:

  • 您是否尝试在 devtools 中对其进行调试?
  • @Tigran 上面这个grid_InitDeleting是Devexpress GridView的delete默认函数,然后会在函数LoadGridView中被调用:gv.RowDeleting += grid_InitDeleting;
  • 我的意思是在浏览器开发工具中调试,实际调试javascript并查看程序是否实际到达代码。
  • Delete 发起回调,回调完成后你应该使用 EndCallback 处理程序执行 js 代码。看看这个question 和答案中引用的问题。
  • @Filip 谢谢你,我在你的推荐答案中找到了解决方案

标签: c# asp.net gridview devexpress


【解决方案1】:

ASPxGridView.EnableCallBacks 属性设置为 False

见:

详细解释

【讨论】:

    【解决方案2】:

    我建议您将 SettingsBehavior-ConfirmDelete 设置为 true 和 SettingsText-ConfirmDelete=。 然后像这样处理 OnRowDeleting 事件Example Row Deleting

    可以通过 jsproperties (jsproperties) 设置属性并处理 EndCallback 事件以显示警报。

    【讨论】:

      猜你喜欢
      • 2016-04-30
      • 2011-11-13
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-16
      • 1970-01-01
      相关资源
      最近更新 更多