2011-10-06 45 views
1

我已經四處尋找一種實現此方法。這裏是什麼,我有一個僞代碼表示:有條件的確認提示後面的asp.net代碼

bool hasData = ItemHasData(itemid); 
Confirm = "false"; // hidden variable 

if (hasData) 
{ 
    //Code to call confirm(message) returns "true" or "false" 
    if (Confirm == "true") 
    { 
     //Delete item 
    } 
    else if (Confirm == "false") 
    { 
     return; 
    } 
} 

的代碼來調用確認使用ASP:立即控制,並設置它等於確認。我只能在函數退出後才能看到彈出窗口。之後它對條件沒有任何作用。

一般的共識似乎是在特定的線路上調用javascript是不可能的(由於服務器端/客戶端的差距有意義),但我該如何實現這一點?我嘗試了使用ASP.NET AJAX Toolkit中的ConfirmButtonExtender,但是當對象設置爲runat =「server」時,我無法與後面的代碼中的confirmbuttonextender對象進行交互。

編輯:

對不起,我沒有錯過那些花絮。謝謝伊卡洛斯。

控件本身就是GridView(僞版本實際上來自gvData_RowCommand函數)的rowcommand。第一次檢查看看CommandName是否是DeleteItem,如果是這樣的話。

gvData的列是根據標題列表(和數據集)傳遞的,因爲它正在處理的表是針對具有不同所需信息的多個項目。 gvData的數據在那裏,我只需要得到一個「是/否」(或者實際上最終會成爲「確定/取消」)對話框,以確認他們想要在有數據時刪除該項目。

+1

如果不知道我們在談論什麼樣的控件,以及如何將數據綁定到它,很難給出示例代碼 – Icarus

+1

我不知道使用其他方法,例如,一個[ModalPopup](http://www.asp.net/ajaxlibrary/AjaxControlToolkitSampleSite/modalpopup/modalpopup.aspx)作爲ConfirmBox,使其從代碼隱藏('Show')中可見,退出該函數,處理Popup的Events並執行任何操作你需要根據用戶在那裏選擇的內容。 –

回答

3

我最終在某些情況下使用的一種方法是讓Panel顯示Confirm/Cancel按鈕。這避免了處理JavaScript事件並完全使用ASP.NET的需要。

<asp:Panel ID="pDeleteConfirm" runat="server" 
    CssClass="AlertDialog" 
    Visible="False"> 
    <p>Do you wish to delete the selected record?<br /> 
    <asp:Button ID="btDeleteYes" runat="server" OnClick="btDelete_Click" Text="Delete" /> 
    <asp:Button ID="btDeleteNo" runat="server" OnClick="btDelete_Click" Text="Cancel" /> 
    </p> 
</asp:Panel> 

<asp:GridView ID="gvData" runat="server" 
    AutoGenerateColumns="False" 
    CssClass="GridView" 
    DataKeyNames="ID" 
    DataSourceID="sqlData" 
    EmptyDataText="There is no data entered in the system." 
    OnRowDeleting="gvData_RowDeleting"> 
    ...... 
</asp:GridView> 

我用​​事件來顯示面板

protected void gvData_RowDeleting(object sender, GridViewDeleteEventArgs e) 
{ 
    // Show confirmation dialog 
    pDeleteConfirm.Visible = true; 

    // Select the row to delete 
    gvData.SelectedIndex = e.RowIndex; 

    // Cancel the delete so the user can use the confirm box 
    e.Cancel = true; 
} 

處理按鈕Click事件

protected void btDelete_Click(object sender, EventArgs e) 
{ 
    Button bt = (Button)sender; 
    switch (bt.ID) 
    { 
     case "btDeleteYes": // they confirmed a delete 
      sqlData.Delete(); 
      break; 

     case "btDeleteNo": // they clicked cancel 
      // Do nothing 
      break; 

     default: 
      throw new Exception("Unknow button click in btDelete_Click"); 
    } 
    // clear selection and hide the confirm box 
    gvData.SelectedIndex = -1; 
    pDeleteConfirm.Visible = false; 
} 

這不是JavaScript,但你可以在一些UpdatePanel s添加到做到AJAX的工作。

只有一種方法通過ASP.NET而不是JavaScript處理。

+0

我正在努力實現這一點,但是這看起來似乎最終會走上正軌。如果我能夠正確處理它,將會標記爲正確。 – Robert

1

您的代碼隱藏工作是將HTML呈現給瀏覽器。它這樣做,然後關閉套接字並且服務器端代碼不再執行。

您必須在客戶端使用Javascript函數來實現此邏輯。

你是否試圖警告用戶,如果有數據加載之前,他們採取了一定的行動?或者也許在他們試圖離開頁面之前?當頁面上發生該操作時,必須使用腳本彈出警報。

相關問題