如何在不使用 LinkButton 的情况下使用中继器的 OnItemCommand 触发文本框事件?
How to fire event of textbox with OnItemCommand of a repeater , without using LinkButton?
我有一个内部有文本框的转发器,我想触发一个事件
当我从一个文本框移动到另一个文本框时,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
(例如,我在 Textbox #1
,然后移动到 Textbox #2
...然后我想触发处理具有 123
值的文本框的事件)?
谢谢
I tried to use the OnTextChanged of the Textbox , but I can't get the
item that fired the event this way .
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");
}
RepeaterItem
中任何控件的 NamingContainer
始终是 RepeaterItem
。顺便说一句,这对于其他网络数据绑定控件(如 GridView
或 DataList
.
的工作方式类似
我有一个内部有文本框的转发器,我想触发一个事件
当我从一个文本框移动到另一个文本框时,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
(例如,我在 Textbox #1
,然后移动到 Textbox #2
...然后我想触发处理具有 123
值的文本框的事件)?
谢谢
I tried to use the OnTextChanged of the Textbox , but I can't get the item that fired the event this way .
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");
}
RepeaterItem
中任何控件的 NamingContainer
始终是 RepeaterItem
。顺便说一句,这对于其他网络数据绑定控件(如 GridView
或 DataList
.