こんにちは、よろしくお願いします。これが私の問題です:
- マスターページとメインページに分割されたWebページがあります。
- どちらのページにも動的にセットアップされるものはなく(コードビハインドなし)、すべて.aspxページに設定されます。
- MasterPageには、[保存]ボタンがあります。
- メインページにはいくつかのテキストボックスがあります。
- メインページのテキストボックスには、フォーカスがこれらのチェックボックスのいずれかを離れたときに発生するイベント(void SumAll(...))があります。
- MasterPageには、[保存]ボタンに接続されたクリックイベントがあります。
これが起こったことです:
- メインページのテキストボックスのいずれかに変更を加えましたが、フォーカスがこのテキストボックスを離れません(SumAll()イベントがすぐに発生することはありません)。
- 次に、MasterPageの[保存]ボタンをクリックします。
MasterPageの「保存」ボタンのクリックイベントが発生することを期待していますが、発生しません。メインページのtextchange(SumAll())イベントは発生しますが、MasterPageクリックイベントは発生しません。
MasterPageの[保存]ボタンをもう一度クリックすると、MasterPageのクリックイベントは正常に発生しますが、もちろん、メインページの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>
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";
どんな助けでも大歓迎です!ありがとう