2015-04-30 5 views
4

У меня есть ретранслятор с текстовым полем внутри, и я хочу запустить событие , когда я перехожу из одного текстового поля в другое текстовое поле, с OnItemCommand из ретранслятора.Как запустить событие текстового поля с помощью OnItemCommand ретранслятора, не используя LinkButton?

<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 в Textbox, но я не могу получить элемент, который уволил событие таким образом.

Может кто-нибудь, пожалуйста, сообщите на хороший способ получить элемент, который запускает событие, после того, как я переехал из одного текстового поля, используя OnItemCommand (например, я вошел в 123Textbox #1, а затем переехал в Textbox #2 ... потом Я хочу запустить событие, которое заботится о текстовом поле, которое имеет значение 123)?

Благодаря

ответ

2

Я пытался использовать OnTextChanged в Textbox, но я не могу получить элемент, который уволил событие таким образом.

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.

+0

Спасибо, но мне это не очень помогает, так как мне также нужно получить скрытое поле блока, и отправитель не включает в себя это ... – ron

+0

Вот почему мне нужен ретранслятор, он включает в себя все вещь – ron

+0

@ron: я отредактировал свой ответ, чтобы показать вам, как это работает. –