【发布时间】:2013-02-19 19:37:48
【问题描述】:
您好,提前感谢您的帮助。 这是我的问题:
- 我的网页分为 MasterPage 和 Main Page。
- 任何一个页面中的任何内容都不是动态设置的(没有代码隐藏),它们都是在 .aspx 页面上设置的。
- 在 MasterPage 我有一个“保存”按钮。
- 在主页上我有几个文本框。
- 主页文本框有一个事件 (void SumAll(...)),当焦点离开这些复选框时会触发该事件。
- 在 MasterPage 上,我有一个连接到“保存”按钮的单击事件。
事情是这样的:
- 我对主页上的任何一个文本框进行了更改,但焦点没有离开此文本框(没有立即触发 SumAll() 事件)。
- 然后单击 MasterPage 中的“保存”按钮。
我希望 MasterPage“保存”按钮单击事件会触发,但它永远不会触发! Main Page textchange (SumAll()) 事件会触发,但 MasterPage click 事件不会。
如果我再次单击 MasterPage“保存”按钮,MasterPage click 事件会成功触发,但当然不会触发 Main Page textchanged 事件。当我只单击 MasterPage 的“保存”按钮而不在主页上进行任何更改时也是如此。
这是我的代码示例。 主页 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;
}
}
还有我的 MasterPage 的“保存”按钮点击事件:
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>
页面加载:
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";
非常感谢任何帮助! 谢谢
【问题讨论】:
-
您能告诉我们主页上保存按钮的标记吗?我们还可以查看您在 page_load 中为任一页面提供的任何代码吗?
-
MasterPage 的 page_load 仅启用 MasterPage 上的按钮,因此它不重要。保存按钮始终处于启用状态。
-
请将您的代码放在原始问题中,而不是 cmets。这次我为你做了。
-
为什么你的页面加载中有这行:
Button saveButton = (Button)Master.FindControl("btnSave");,你在用saveButton做什么? -
我访问 MasterPage 保存按钮是因为(取决于保存/未保存状态)我将按钮文本从“保存”更改为“更新”