【问题标题】:JQuery UI Dialog disappears when an edit button in my gridview is clicked单击我的 gridview 中的编辑按钮时,JQuery UI 对话框消失
【发布时间】:2013-12-10 22:26:05
【问题描述】:

我有一个我正在处理的asp 页面,其中有一个带有编辑按钮的gridview 控件。我能够获得编辑按钮来显示 JQuery UI 对话框。问题是当我点击按钮时,对话框打开然后很快关闭。这是 gridview 的标记:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
       BackColor="White" BorderColor="#CCCCCC" 
       BorderStyle="None" BorderWidth="1px" CellPadding="4" ForeColor="Black" 
       OnRowDataBound="GridView1_RowDataBound" 
       style="margin-bottom: 0px" >
       <Columns>
               <asp:TemplateField HeaderText="Edit">
                     <ItemTemplate>
                           <asp:LinkButton Id="btnEditRow" Text="Edit" OnClientClick="EditRecordOpen('editForm');" OnClick="btnEditRow_Click" runat="server" />
                      </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="StartTime" HeaderText="Start Time" 
                      SortExpression="StartTime" >
                      <ItemStyle Width="180px" />
                 </asp:BoundField>
       </Columns>
 </asp:GridView>

这就是我的 javascript 的样子:

<script type="text/javascript">
        $(document).ready(function () {
            $("#editForm").dialog({
                autoOpen: false,
                draggable: true,
                title: "Edit Record",
                open: function (type, data) {
                    $(this).parent().appendTo("form");
                }
            });
        });

        function EditRecordOpen(id) {
            $("#" + id).dialog("open");
            return false;
        }

        function EditRecordClose(id) {
            $("#" + id).dialog("close");
            return false;
        }
</script>

我阅读了另一个 StackOverflow 问题,该问题放置

 return false;

会停止这种行为,但它仍然会消失。

还有 3 个函数可以控制与对话框相关的按钮点击:

private void CloseDialog(string dialogId)
{
      string script = string.Format(@"closeDialog('{0}')", dialogId);
      ScriptManager.RegisterClientScriptBlock(this, typeof(Page), UniqueID, script, true);
}

protected void btnSaveRecord_Click(object sender, EventArgs e)
{
      CloseDialog("editForm");
}

protected void btnEditRow_Click(object sender, EventArgs e)
{
      var editLink = ((LinkButton)sender);
      editRecordPanel.Update();
}

我也尝试使用 Chrome 开发者工具查看点击期间发生的情况,但没有看到与对话框相关的任何错误。

另外,我使用来自http://blog.roonga.com.au/2009/07/using-jquery-ui-dialog-with-aspnet-and.html 页面的示例来设置对话框

同样,我的弹出窗口定义在这里:

<div id="editForm">
     <asp:UpdatePanel ID="editRecordPanel" UpdateMode="Conditional" ChildrenAsTriggers="true" runat="server">
          <ContentTemplate>
               <asp:Label ID="popupTest" runat="server" Text="Test"></asp:Label>
               <asp:Button ID="btnSaveRecord" runat="server" Text="Save" OnClick="btnSaveRecord_Click" />
          </ContentTemplate>
      </asp:UpdatePanel>
</div>

【问题讨论】:

  • UpdatePanel 里面的都是这些吗? - 从我第二次看到的情况来看,对话框出现后,您通过调用后面的代码进行回发。该对话框无法保留/停止回帖,就像唯一一个提出问题的浏览器对话框一样。所以很正常,你打开对话框,然后因为回帖而关闭,页面重新加载。
  • 这就是对话框只显示一秒钟的原因?我怎么能阻止它?另外,我将弹出窗口的所有标记都放在了问题中。我忘记添加了。
  • 放置OnClientClick="EditRecordOpen('editForm');return false;",然后你的对话框就会打开,但我不知道你接下来要做什么
  • 谢谢,成功了。接下来,我需要获取行数据,以便用户可以对其进行编辑。但我可能应该提出另一个问题。

标签: c# asp.net gridview jquery-ui-dialog


【解决方案1】:

搞定了,@Aristos 帮我弄清楚我需要放置

return false;

里面

OnClientClick="EditRecordOpen('editForm'); return false;"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多