确认框第一次不提交

时间:2011-10-26 09:56:58

标签: c# javascript .net

我正在使用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...
        }
    }

有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

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

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

充其量是多余的。

我的理论是,您在同一个验证组中的页面上有其他控件,这些控件在按下删除按钮时无效。但是在javascript部分,您正在停用页面验证,因此第一次点击被吞下,但任何进一步的点击都会成功。

因此,如果您使用不同的验证组,它应该可以正常工作。