2011-08-10 76 views
0

我有一個asp gridview。在行數據綁定中,我添加了onclick事件以查看項目詳細信息。我也刪除按鈕。問題是當我點擊項目刪除,它刪除項目,但也重定向到項目預覽頁面。它不應該做回傳和重定向如何刪除行點擊確認消息是否爲真?

這是我在客戶端我有確認消息的代碼

protected void Grid_DataBound(object sender, GridViewRowEventArgs e) 
     { 

       e.Row.Attributes["onClick"] = String.Format("location.href='" + "/Url/page.aspx?id=" + "{0}", DataBinder.Eval(e.Row.DataItem, "Id") + "'"); 
      } 

刪除按鈕

public void GvDeleteHabit(object source, CommandEventArgs e) 
{ 
    int id= Convert.ToInt32(e.CommandName); 
    Delete(id); 
} 


<asp:LinkButton OnCommand="Delete" title="Delete" OnClientClick="javascript:return confirm('Do you want to delete?')" 
CommandName='<%# Eval("Id")%>' runat="server" ID="BtnDelete"></asp:LinkButton> 

。所以我想要實現的是當用戶點擊刪除按鈕和是的,我需要刪除行和刪除項目onclick事件。

如果用戶點擊沒有停止頁面加載。因此用戶可以點擊行中的某處並查看項目的詳細信息。

+0

對我強調的問題添加此方法。 –

+0

查找並修改執行重定向的代碼?我沒有看到任何提供這樣做的事情。 – asawyer

回答

0

嘗試從OnClientClick中刪除javascript:。只有在href屬性中使用javascript時才需要。

0

您遇到的問題是,即使您單擊「刪除」,仍然會將該行註冊爲點擊事件,然後再觸發重定向。你應該把你的重定向到一個函數中,並傳入click事件的源代碼。如果源是您的按鈕,請退出該功能。

onRowClick = function(source){ 
    if (source.element.type == "button") // this may not be correct, but you get the point 
     return confirm('Are you sure you want to delete this item'); 
    //do your redirect here 
} 

e.Row.Attributes["onclick"] = "onRowClick(this);"; 

,並在您的HTML標記:

<asp:LinkButton OnCommand="Delete" title="Delete" OnClientClick="javascript:return onRowClick(this);" 
CommandName='<%# Eval("Id")%>' runat="server" ID="BtnDelete"></asp:LinkButton> 
0

既然你有行onclick處理程序也,你必須基本上停止刪除按鈕點擊事件傳播,試試這個它會解決這個問題。

ASPX變化

<asp:LinkButton OnCommand="Delete" title="Delete" OnClientClick="javascript:return confrimDelete(e);" 
CommandName='<%# Eval("Id")%>' runat="server" ID="BtnDelete"></asp:LinkButton> 

您的任何js文件或頁面

function confirmDelete(){ 
    var event = e || window.event; 
    if (event.stopPropagation) { 
    event.stopPropagation(); 
    } else { 
    event.cancelBubble = true; 
    } 

    return confirm('Do you want to delete?'); 
}