2011-10-26 47 views
0

我正在使用C#和我有一箇中繼器內的ImageButton。我想要這個按鈕有一個確認框,然後觸發中繼器的itemCommand。確認框不提交第一次

問題是你第一次點擊它時提交沒有被觸發。在你點擊它的其餘時間工作得很好,但不是第一次。

的ASPX的代碼:

<script type="text/javascript"> 
    function Doconfirm(message) { 

     var proceed = confirm(message); 
     if (proceed) { 
      Page_ValidationActive = false; 
     } 
     return proceed; 
    } 
</script> 

<asp:Repeater ID="rptOrders" runat="server" OnItemDataBound="rptOrders_itemDataBound" OnItemCommand="rptOrders_ItemCommand"> 
    <ItemTemplate> 
     <asp:ImageButton CausesValidation="false" ID="DeleteImageButton" runat="server" CommandName="Delete" Enabled = "false" ImageUrl="aux_images/bg-ie-select-width-13px.png"/> 

    </ItemTemplate> 

這背後的代碼是:

protected void rptOrders_itemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     if (e.Item.DataItem != null) 
     { 
     //Some code... 
     ImageButton LnkDelete = (ImageButton)e.Item.FindControl("DeleteImageButton"); 
        LnkDelete.Enabled = true; 
        LnkDelete.OnClientClick = "return Doconfirm('" + this.GetLocalResourceObject("ConfirmText") + "');"; 
        LnkDelete.ID = Detail.OrderId.ToString(); 
        LnkDelete.CommandArgument = Detail.OrderId.ToString(); 
        LnkDelete.CommandName = "Delete"; 
       } 
      } 
     } 
    } 

    protected void rptOrders_ItemCommand(object source, RepeaterCommandEventArgs e) 
    { 
     if (e.CommandName.Equals("Delete")) 
     { 
      //Some code... 
     } 
    } 

有人可以幫我嗎?

回答

0

我注意到在你的代碼的第一件事是(在rptOrders_itemDataBound)行

LnkDelete.ID = Detail.OrderId.ToString(); 

這是多餘的最好的。

我的理論是,您在同一個驗證組的頁面上有其他控件,當按下刪除按鈕時無效。但在JavaScript部分,您將停用頁面驗證,因此第一次點擊被吞噬,但任何進一步點擊都會成功。

所以,如果你使用不同的驗證組,它應該工作得很好。

+0

任何想法,我如何使它的第一次點擊工作? –

+0

爲我的回答添加了一個解決方案:) – saintedlama

+0

仍然無法正常工作><任何其他想法? –

相關問題