2

さて、ここに私の問題があります:

ほぼ同一であるが、異なるデータセットを収集する2つのフィールドセットが必要なフォームがあります。これらはUpdatePanelに含まれています。ユーザーがフォームにデータを入力し、[追加]ボタンを押すと、この行がDataTableに挿入されます。ユーザーは、必要な数の行を入力できる必要があります。

それらはほとんど同じなので、最初に1つを正しく動作させ、次にそれを2番目のベースとして使用しました。

問題は、「追加」ボタンが1回だけトリガーされるようになったことです。もう一度叩こうとしても何も起こりません。ポストバックは発生しません。

私はいくつかの調査を行いました、そして彼らはボタンをスクリプトマネージャー ASP.Netボタンクリックイベントに登録するようにアドバイスしましたが起動しません

これは問題を解決しませんでした。

他に何を試すことができるかについてのアイデアはありますか?

編集3: 解決策: 問題は、EnabledClientScript = "true"のasp:RegularExpressionValidatorでした。コントロールがレンダリングされるときに、検証するコントロールのjavascriptが衝突し、asp:Buttonのjavascriptを壊すようです。ClientScriptを無効にすると、ボタンが機能します。

ライフサイクルを調べるという提案は、私を正しい答えに導きます。問題は、コードビハインドでライフサイクルが発生していないことでした。したがって、ボタンが何にレンダリングされるかを調べた後、それはjavascript関連の問題である必要があることを意味しました。

編集2:asp:Validationコントロールを無効にしましたが、機能しています。これについて何か洞察はありますか?

編集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.";
    }
}
4

1 に答える 1

0

ページ ライフサイクル イベント (つまり、Page_Init、Page_Load、Page_PreRender) で何が起こっていますか?

ページの最初のロードでのみ処理する必要があるすべてのポストバックで処理していますか (Page.IsPostBack をチェックしていますか)。

于 2009-12-18T16:53:22.943 に答える