.net Button只触发一次

时间:2009-12-18 15:54:36

标签: .net asp.net webforms validation aspbutton

好的,这是我的问题:

我有一个表单需要有两个几乎完全相同但收集不同数据集的字段集。这些包含在UpdatePanel中。用户以表格形式输入数据,当他们点击“添加”时  按钮,此行插入DataTable。用户应该能够输入任意数量的行。

由于它们几乎相同,我首先让一个正常工作,然后我用它作为第二个的基础。

问题是现在他们只有“添加”按钮被触发一次。当我再试一次时,没有任何反应。没有回发。

我做了一些研究,他们建议将按钮注册到脚本管理器 ASP.Net button click event not firing

这并没有解决问题。

关于我还能尝试什么的任何想法?

编辑3: 的解决方案: 问题是asp:RegularExpressionValidator,EnabledClientScript =“true”。似乎控件的javascript在渲染控件时会碰撞并破坏asp:Button的javascript。如果我禁用了ClientScript,则按钮可以正常工作。

调查生命周期的建议引导我找到正确的答案。问题是代码背后没有任何生命周期发生。因此,在检查了按钮呈现的内容之后,这意味着它必须是与javascript相关的问题。

编辑2: 我禁用了asp:Validation控件,它正在运行。对此有何见解?

编辑1:

以下是与问题相关的一些代码

按钮标记:

<td >
            <asp:Button ID="btnPrNew" Text="Add" OnClick="btnPrNew_Click" runat="server" />
</td>

这是处理onclick事件的功能

protected void btnPrNew_Click(object sender, EventArgs e)
{
    if (prQuantityValidator.IsValid && prPriceValidator.IsValid)
    {
        permanentRepairs = newItemizedDT();
        permanentRepairsTotal = populateDT(gvEstimatePermanentRepairs,    permanentRepairs) + addNewPrRow(); ;

        updateSubtotal(totalPermanentRepairs, permanentRepairsTotal);

        bindData(permanentRepairs, gvEstimatePermanentRepairs);
        clearPrForm();
    }
    else
    {
        erErrorMessage.Text = "Please enter only number amounts in Quantity and Unit Price field.";
    }
}

1 个答案:

答案 0 :(得分:0)

您的网页生命周期事件(即Page_Init,Page_Load,Page_PreRender)中发生了什么?

你是否正在处理每个回发上的内容(你是否正在检查Page.IsPostBack),你应该只在第一次加载页面时处理它?