1

コードビハインドから多数のマスク編集エクステンダーを作成したいと考えています。何かのようなもの:

private MaskedEditExtender m_maskedEditExtender;
protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    m_maskedEditExtender = new MaskedEditExtender()
    {
        BehaviorID = "clientName"
    };
    m_maskedEditExtender.Mask = "999999999";
    this.Controls.Add(m_maskedEditExtender);
}
protected override void Render(HtmlTextWriter writer)
{
    m_maskedEditExtender.RenderControl(writer);
}

これを行うと、MaskedEditExtender の OnLoad で NullReferenceException が発生します。それを行う正しい方法は何ですか?エクステンダーをリピーターのようなコントロールに入れて DataBind を使用してもうまくいかないことに注意してください。

編集:更新パネルがありません。また、サーバー側でターゲット コントロールを指定する必要があることがわかりました。

4

3 に答える 3

1

あなたの例は TargetControlID を提供していません。

ページに updatePanel がありますか? エクステンダーが updatePanel コンテンツに追加されていなかったため、エクステンダーを動的に作成する際に問題がありました。

また、ScriptManager(エクステンダーの登録)で何かをする必要があると思いますが、間違っている可能性があります(現時点では動的エクステンダーを行ったコードにアクセスできません)。

于 2008-09-17T13:20:03.630 に答える
1

これがページ サブクラスにある場合は、ASP.NET ページ ライフ サイクルの概要を参照してください。イベント リストまで下にスクロールすると、そのページで PreInit イベントを使用して動的コントロールを作成するようにアドバイスされます。とりわけ、ASP.NET が適切な段階で ViewState をクリーンに読み込むようにするために、早い段階でこれを行う必要があります。

ただし、Web ユーザー コントロールまたはカスタム コントロールでこれを行う場合は、CreateChildControls をオーバーライドして、そこでこれを行います。

それが役に立たない場合は、より完全なコード例を投稿してください。

于 2008-09-17T13:24:57.597 に答える
0

MaskedEditExtender に適切な TargetControlID 値を提供する

于 2015-10-16T14:51:25.423 に答える