我正在使用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 :(得分:0)
我在你的代码中注意到的第一件事是行(在rptOrders_itemDataBound中)
LnkDelete.ID = Detail.OrderId.ToString();
充其量是多余的。
我的理论是,您在同一个验证组中的页面上有其他控件,这些控件在按下删除按钮时无效。但是在javascript部分,您正在停用页面验证,因此第一次点击被吞下,但任何进一步的点击都会成功。
因此,如果您使用不同的验证组,它应该可以正常工作。