2013-12-09 49 views
0

我有這個我正在處理的asp頁面,它有一個gridview控件,它有編輯按鈕。我可以通過編輯按鈕來顯示JQuery UI對話框。問題是,當我點擊按鈕時,對話框打開,然後很快關閉。這裏是爲GridView的標記:當我點擊GridView中的編輯按鈕時,JQuery UI對話框消失

<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> 
+2

UpdatePanel裏面是所有的東西嗎? - 從第二眼看到的內容出現後,通過調用後面的代碼進行回發。該對話框無法阻止/停止發佈回覆,就像提出問題的唯一瀏覽器對話框一樣。所以是正常的,你打開對話框,然後關閉,因爲回發和頁面重新加載。 – Aristos

+0

所以這就是爲什麼對話只顯示一秒鐘?我怎麼能阻止呢?另外,我把所有的標記放在問題的彈出窗口中。我最初忘了補充一點。 – user

+1

放置OnClientClick =「EditRecordOpen('editForm');返回false;」'然後你打開對話框,但我不知道你想要做什麼 – Aristos

回答

0

得到它的工作,@Aristos幫我找出我放置

return false; 

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