1

コンボボックスとテキストボックスを持つ複合 Web コントロールがあるとします。テキストボックス内のテキストが変更されたときにポストバックして値をコンボボックスのオプションとして追加するように、コントロール機能に組み込むことは可能ですか?

「onchange」ハンドラーをテキストボックスに追加して、Javascript で何かを動作させることができることはわかっていますが、それは実際に私がやろうとしていることではありません。次のように置く方法はありますか:

Protected Sub txt1_TextChanged(sender As Object, e As System.EventArgs) Handles txt1.TextChanged
    combo1.items.add(txt1.Text)
End Sub

Web コントロール コードで、テキスト ボックスの TextChanged イベントに接続しますか?

4

1 に答える 1

1

要するに、はい、これを行うことができるはずです。

VB に必要な構文はわかりませんが、C# で同様のことを何度も行っています。C# の場合、イベント ハンドラーの名前をテキスト ボックスのマークアップに追加し、テキスト ボックスの自動ポストバックを true に設定します。次に、コード ビハインド イベント ハンドラーが必要な作業を実行します。

原則として、Web コントロールにもカスタム イベントを定義し、テキスト ボックスのイベント ハンドラーでこのカスタム イベントも発生させます。これにより、コントロールを使用しているページがイベントに対しても動作できるようにするオプションが提供されます。

編集:

これは、DropDownList の例です。これは、一連の Active Directory ドメイン内でユーザーを検索するためのコントロールの一部でした。ユーザーが選択したドメインを変更した場合、以前に入力した値を新しいドメインで検索する必要がありました。

マークアップ:

<asp:DropDownList ID="ddl_Domain" runat="server" onselectedindexchanged="ddl_Domain_SelectedIndexChanged" AutoPostBack="True"></asp:DropDownList>

コードビハインド:

protected void ddl_Domain_SelectedIndexChanged(object sender, EventArgs e)
{
    if (UserID != "" || LastName != "" || FirstName != "" || EmailAddress != "")
    {
        lnk_Find_Click(sender, e);
    }
}

または、コードを使用して子コントロールを動的に追加した場合は、次の構文を使用しました。

DropDownList ddl = new DropDownList();
ddl.ID = "ddl";
ddl.DataTextField = "Text";
ddl.DataValueField = "Value";
ddl.SelectedIndexChanged += This_SelectedValue_Changed;
ddl.AutoPostBack = true; 

私が言ったようにHandles、VB の構文でこれを機能させる方法はわかりませんが、可能であるはずです。

于 2012-01-11T15:55:01.033 に答える