假设我们有一个带有组合框和文本框的复合网页控件。是否可以构建控制功能,以便当文本框中的文本发生更改时,它会回发并将值作为选项添加到组合框中?
我知道我可以在文本框中添加一个“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事件?
答案 0 :(得分:1)
简而言之,你应该能够做到这一点。
我不知道VB需要什么语法,但我在C#中多次做过类似的事情。对于C#,您可以将偶数处理程序的名称添加到文本框的标记中,并将文本框上的自动回发设置为true。然后,事件处理程序背后的代码执行您需要它的工作。
作为一项规则,我还在Web控件上定义了一个自定义事件,并让文本框的事件处理程序也引发了这个custome事件。这样就可以选择让使用控件的页面对事件起作用。
修改强>
以下是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;
正如我所说,我不知道如何使用VB的Handles
语法来完成这项工作,但它应该是可行的。