Asp.net 从复合Web控件内的控件回发
假设我们有一个复合web控件,其中包含一个combobox和一个textbox。是否可以将控件功能内置到文本框中,以便当文本框中的文本发生更改时,它会发回并将值作为选项添加到组合框中 我知道我可以在文本框中添加一个“onchange”处理程序,并使用Javascript实现一些功能,但这并不是我真正想要做的。有没有一种方法可以像这样:Asp.net 从复合Web控件内的控件回发,asp.net,vb.net,custom-controls,postback,composite-controls,Asp.net,Vb.net,Custom Controls,Postback,Composite Controls,假设我们有一个复合web控件,其中包含一个combobox和一个textbox。是否可以将控件功能内置到文本框中,以便当文本框中的文本发生更改时,它会发回并将值作为选项添加到组合框中 我知道我可以在文本框中添加一个“onchange”处理程序,并使用Javascript实现一些功能,但这并不是我真正想要做的。有没有一种方法可以像这样: Protected Sub txt1_TextChanged(sender As Object, e As System.EventArgs) Handles t
Protected Sub txt1_TextChanged(sender As Object, e As System.EventArgs) Handles txt1.TextChanged
combo1.items.add(txt1.Text)
End Sub
在web控件代码中,它连接到textbox的TextChanged事件?简而言之,是的,您应该能够做到这一点 我不知道VB需要什么语法,但我在C#中多次做过类似的事情。对于C#,您可以将偶数处理程序的名称添加到文本框的标记中,并将文本框上的自动回发设置为true。然后,代码隐藏事件处理程序执行您需要它执行的任何操作 通常,我还在web控件上定义一个自定义事件,并让textbox的事件处理程序也引发这个自定义事件。这提供了让使用控件的页面也对事件进行操作的选项 编辑: 下面是一个DropDownList的示例,它是在一组Active Directory域中查找用户的控件的一部分。如果用户更改了他们选择的域,我们希望它在新域上搜索以前输入的值 加价:
<asp:DropDownList ID="ddl_Domain" runat="server" onselectedindexchanged="ddl_Domain_SelectedIndexChanged" AutoPostBack="True"></asp:DropDownList>
或者在通过代码动态添加子控件的情况下,我使用了以下语法:
DropDownList ddl = new DropDownList();
ddl.ID = "ddl";
ddl.DataTextField = "Text";
ddl.DataValueField = "Value";
ddl.SelectedIndexChanged += This_SelectedValue_Changed;
ddl.AutoPostBack = true;
正如我所说,我不确定如何使用VB的
句柄语法来实现这一点,但这应该是可能的。简而言之,是的,您应该能够做到这一点
我不知道VB需要什么语法,但我在C#中多次做过类似的事情。对于C#,您可以将偶数处理程序的名称添加到文本框的标记中,并将文本框上的自动回发设置为true。然后,代码隐藏事件处理程序执行您需要它执行的任何操作
通常,我还在web控件上定义一个自定义事件,并让textbox的事件处理程序也引发这个自定义事件。这提供了让使用控件的页面也对事件进行操作的选项
编辑:
下面是一个DropDownList的示例,它是在一组Active Directory域中查找用户的控件的一部分。如果用户更改了他们选择的域,我们希望它在新域上搜索以前输入的值
加价:
<asp:DropDownList ID="ddl_Domain" runat="server" onselectedindexchanged="ddl_Domain_SelectedIndexChanged" AutoPostBack="True"></asp:DropDownList>
或者在通过代码动态添加子控件的情况下,我使用了以下语法:
DropDownList ddl = new DropDownList();
ddl.ID = "ddl";
ddl.DataTextField = "Text";
ddl.DataValueField = "Value";
ddl.SelectedIndexChanged += This_SelectedValue_Changed;
ddl.AutoPostBack = true;
正如我所说,我不知道如何使用VB的句柄语法来实现这一点,但这应该是可能的。我使用的是asp:TextBox,所以我不处理标记;我有一个使用RenderControl呈现到页面的控件。类似“txt1.OnTextChanged…”的内容似乎无法访问。你能举个例子让我更好地理解你的意思吗?“我能读C#,所以应该没问题。”戴夫对反应慢表示抱歉,他暂时处于离线状态。添加了一个示例,但我使用的是asp:TextBox,所以我不处理标记;我有一个使用RenderControl呈现到页面的控件。类似“txt1.OnTextChanged…”的内容似乎无法访问。你能举个例子让我更好地理解你的意思吗?“我能读C#,所以应该没问题。”戴夫对反应慢表示抱歉,他暂时处于离线状态。已添加示例。