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; 

正如我所说,我不确定如何使用HandlesVB 的语法来完成这项工作,但它应该是可能的。

于 2012-01-11T15:55:01.033 回答