2013-02-19 195 views
0

嗨,感谢您的帮助提前。 这是我的问题:MasterPage按钮点击事件不会触发第一次点击,但第二次点击

  • 我有一个网页分成一个MasterPage和一个主页。
  • 任何页面都没有动态设置(没有代码隐藏),它全部设置在.aspx页面上。
  • 在MasterPage上我有一个“保存”按钮。
  • 在主页上我有几个文本框。
  • 主页文本框有一个事件(void SumAll(...)),当焦点离开这些复选框时触发。
  • 在MasterPage上我有一个点击事件连接到“保存”按钮。

这是happends:

  • 我做出改变,以在主画面的文本框的任何一个,但焦点不会离开这个文本框(无SumAll()事件fireing马上) 。
  • 然后点击MasterPage中的“保存”按钮。

我期望MasterPage“保存”按钮点击事件触发,但它永远不会!主页textchange(SumAll())事件触发,但MasterPage单击事件不会。

如果再次点击MasterPage“Save”按钮,MasterPage点击事件成功激发,但当然不是主页面textchanged事件。当我只点击主页面上的“保存”按钮而没有对主页面进行任何修改时也是如此。

这是我的代码示例。 主页TextChanged事件:

protected void SumTheAmounts(object sender, EventArgs e) 
    { 
     Decimal lease = 0.00M; 
     Decimal securityDeposit = 0.00M; 
     Decimal miscellanious = 0.00M; 
     Decimal sumTotal = 0.00M; 

     Decimal.TryParse(txtMiscellaneousAmount.Text, out miscellanious); 
     Decimal.TryParse(txtSecurityDepositAmount.Text, out securityDeposit); 
     Decimal.TryParse(txtLeaseAmount.Text, out lease); 

     sumTotal = miscellanious + securityDeposit + lease; 
     txtAmount.Text = sumTotal.ToString(); 

     // Set focus to the next textbox 
     TextBox tb = (TextBox)sender; 
     switch (tb.ID) 
     { 
      case "txtLeaseAmount": 
       txtSecurityDepositAmount.Focus(); 
       break; 
      case "txtSecurityDepositAmount": 
       txtMiscellaneousAmount.Focus(); 
       break; 
      case "txtMiscellaneousAmount": 
       txtMiscellaneousAmount.Focus(); // Send back to the same. . 
       break; 
      default: 
       break; 
     } 
    } 

我的母版的 “保存” 按钮,单击事件:

protected void btnSave_Click(object sender, EventArgs e) 
    { 
     // Save every little thing... 
     switch (ContentPageLoaded) 
     { 
      case "CheckRequest": 
       ((CheckRequest)ContentMain.Page).UpdateMe(); 
       break; 
      case "PicturesLoad": 
       ((PicturesLoad)ContentMain.Page).UpdateMe(); 
       break; 
      default: 
       break; 
     } 
    } 

标记:

<asp:Panel ID="pnlSave" CssClass="ButtonClass" runat="server"> 
    <asp:Button ID="btnSave" style="width:160px; font-size:small; position:relative; color:Blue; top: 0px; left: 0px;" runat="server" Text="Save" onclick="btnSave_Click" CausesValidation="False" /> 
</asp:Panel> 

pageLoad的:

if (!IsPostBack) 
{ 
    Button saveButton = (Button)Master.FindControl("btnSave"); 
    branchName = (string)Session["BranchName"]; 
    branchLegalData = new Classes.BranchLegalData(); 
    if ((branchName != null) && (branchName.Length > 0)) 
    { 
     FillThisPageData(); 
    } 
} 
else { } 
Master.ContentPageLoaded = "CheckRequest"; 

任何帮助非常感谢! 谢谢

+0

您能告诉我们母版上保存按钮的标记吗?我们是否也可以在page_load中看到任何页面上的代码? – 2013-02-19 19:40:49

+0

MasterPage的page_load只启用MasterPage上的按钮,因此它没有任何结果。保存按钮始终处于启用状态。 – stevekershaw 2013-02-19 22:51:55

+0

请将您的代码放在原始问题中,而不是评论。我这次为你做了。 – 2013-02-19 23:19:57

回答

1

这是在黑暗中拍摄的照片,但请尝试为所有文本框设置autopostback =“false”。我怀疑可能发生的情况是,当你将注意力放在文本框上时,你会发射两次回发,然后一下子点击按钮。

这只会发生,如果你有autopostback设置为true。

0

谢谢大家!

设置autopostback =“false”在文本框上工作! 我觉得发生了什么事情是,在autopostback =“true”的情况下,文本框会触发它自己的文本更改事件,并且出于某种原因,MasterPage按钮单击事件在此之后不会触发? 有人可以告诉我为什么textbox事件触发,而不是按钮事件也???

在任何情况下,这个问题已得到解决,我欣赏所有的输入...你们摇滚!

Steve

+0

很高兴解决。如果您觉得我的答案可以解决您的问题,请点击答案左上角的复选框,随时接受它。 您看到此行为的原因是因为您一次只能触发一个帖子。你试图做两件事,但第二件没有做到。 – 2013-02-20 16:56:58

相关问题