2009-12-18 77 views
2

好的,这里是我的问题:.net按钮只触发一次

我有一个窗体,需要有两个字段集几乎相同但收集不同的数据集。这些包含在UpdatePanel中。用户在表单中输入数据,当他们点击“添加”按钮时,该行被插入到DataTable中。用户应该能够按照自己的意愿输入任意数量的行。

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

问题是,现在他们的“添加”按钮只会触发一次。当我尝试再次击中它时,没有任何反应。没有回传发生。

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

这并没有解决问题。

任何我可以尝试的想法?

编辑3: 解决方案: 问题是ASP:用的RegularExpressionValidator = EnabledClientScript “真”。看起来控件的验证JavaScript会在控件呈现时发生碰撞并破坏asp:Button的javascript。如果我禁用了ClientScript,那么按钮就起作用了。

研究生命周期的建议使我得到正确的答案。问题是没有任何生命周期发生在代码后面。因此,在检查按钮呈现的内容后,这意味着它必须是与JavaScript相关的问题。

编辑2: 我禁用了asp:验证控件,它正在工作。对此有何见解?

编辑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."; 
    } 
} 
+2

你可以发表一些代码,所以我们可以看到你在做什么? – Chuck 2009-12-18 16:06:26

+0

当然。给我一个momemnt – 2009-12-18 16:07:41

+0

让我知道你是否需要比这更多的代码。 – 2009-12-18 16:12:00

回答

0

功能页面生命周期事件发生了什么(例如Page_Init,Page_Load,Page _PreRender)?

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

+0

一切都发生在Page_Load上。我不检查Page.IsPostBack。 – 2009-12-18 16:57:59

+0

谢谢!你的问题导致我在正确的地方搜索:) – 2009-12-18 18:48:57