【问题标题】:.net Button fired only once.net 按钮仅触发一次
【发布时间】:2009-12-18 15:54:35
【问题描述】:

好的,这是我的问题:

我有一个表单,它需要两个几乎相同但收集不同数据集的字段集。这些包含在 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.";
    }
}

【问题讨论】:

  • 你能贴一些代码让我们看看你在做什么吗?
  • 如果您需要的不仅仅是代码,请告诉我。
  • 对标记感到抱歉。我刚看到我贴错了。现在这是正确的。

标签: .net asp.net webforms validation aspbutton


【解决方案1】:

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

您是否在每次回发时都处理(您是否检查 Page.IsPostBack)而您应该只在页面的第一次加载时处理这些内容?

【讨论】:

  • 一切都发生在 Page_Load 上。我没有检查 Page.IsPostBack。
猜你喜欢
  • 1970-01-01
  • 2014-10-22
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
  • 1970-01-01
  • 2016-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多