0

こんにちは、よろしくお願いします。これが私の問題です:

  • マスターページとメインページに分割された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"; 

どんな助けでも大歓迎です!ありがとう

4

2 に答える 2

1

これは暗闇の中でのショットですが、すべてのテキストボックスにautopostback="false"を設定してみてください。テキストボックスにフォーカスを置いたまま、一気にボタンをクリックすると、2つのポストバックが発生している可能性があります。

これは、autopostbackがtrueに設定されている場合にのみ発生します。

于 2013-02-20T00:14:10.850 に答える
0

みんな、ありがとう!

テキストボックスにautopostback="false"を設定すると機能しました!autopostback = "true"を使用すると、テキストボックスが独自のテキスト変更イベントを発生させ、その後、何らかの理由でMasterPageボタンクリックイベントが発生しなかったと思います。ボタンイベントではなく、テキストボックスイベントが発生する理由を誰かに教えてもらえますか?

いずれにせよ、この問題は修正されており、すべての入力に感謝しています...皆さんROCK!

スティーブ

于 2013-02-20T16:53:01.413 に答える