我有一个带有文本框的转发器,我想发射一个事件
当我从一个文本框移动到另一个文本框时,使用OnItemCommand
转发器。
<asp:Repeater ID="RptrPeople" runat="server" OnItemDataBound="RptrPeople_ItemDataBound" OnItemCommand="RptrPeople_ItemCommand">
<ItemTemplate>
<asp:HiddenField ID="hf" runat="server" Value="<%# Eval(this.ValuedPerson) %>" />
<asp:TextBox ID="txtDescription" runat="server" IsRequired="false" Visible="true" AutoPostBack="true" />
</ItemTemplate>
</asp:Repeater>
我尝试使用文本框的OnTextChanged
,但我无法通过这种方式获取触发事件的项目。
在我从一个文本框移动后,使用OnItemCommand
(例如,我在123
中输入了Textbox #1
,任何人都可以建议一个好方法来获取触发事件的项目},然后转移到Textbox #2
...然后我想触发处理具有123
值的文本框的事件?
由于
答案 0 :(得分:3)
我尝试使用文本框的OnTextChanged,但我无法获得 以这种方式解雇事件的项目。
sender
参数始终是触发事件的控件:
protected void txtDescription_TextChanged(Object sender, EventArgs e)
{
TextBox txtDescription = (TextBox) sender;
}
所以你应该使用它代替OnItemCommand
,因为sender
是转发器。
如果您还需要使用以下代码获取HiddenField
的引用:
protected void txtDescription_TextChanged(Object sender, EventArgs e)
{
TextBox txtDescription = (TextBox) sender;
var item = (RepeaterItem) txtDescription.NamingContainer;
HiddenField hf = (HiddenField) item.FindControl("hf");
}
NamingContainer
中任何控件的RepeaterItem
始终为RepeaterItem
。顺便说一句,这与其他网络数据绑定控件类似,例如GridView
或DataList
。