单击gridview中的编辑按钮时,JQuery UI对话框消失

时间:2013-12-09 21:14:27

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

我正在使用这个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>

1 个答案:

答案 0 :(得分:0)

有了它的工作,@ Aristos帮我弄清楚我需要放置

return false;

里面的

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