У меня есть JavaScript, который может вам помочь. Мой расширитель автозаполнения ASP.Net отсутствует в ретрансляторе, но я изменил этот код для определения идентификатора TextBox, в который вы собираетесь записать возвращенный идентификатор, он должен работать (но я не проверял его полностью через, чтобы отправить обратно).
Используйте значение из параметра 'source' в методе ItemSelected на стороне клиента. Это идентификатор вызывающего расширителя автозаполнения. Просто убедитесь, что вы назначаете идентификатор скрытого TextBox в элементе повторителя, который похож на идентификатор расширителя.
Примерно так:
<asp:Repeater ID="RepeaterCompareItems" runat="server">
<ItemTemplate>
<ajaxToolkit:AutoCompleteExtender runat="server"
ID="ACE_Item"
TargetControlID="ACE_Item_Input"
...other properties...
OnClientItemSelected="ACEUpdate_RepeaterItems" />
<asp:TextBox ID="ACE_Item_Input" runat="server" />
<asp:TextBox ID="ACE_Item_IDValue" runat="server" style="display: none;" />
</ItemTemplate>
</asp:Repeater>
Тогда метод JS будет выглядеть так:
function ACEUpdate_CustomerEmail(source, eventArgs) {
UpdateTextBox = document.getElementById(source.get_id() + '_IDValue');
//alert('debug = ' + UserIDTextBox);
UpdateTextBox.value = eventArgs.get_value();
//alert('customer id = ' + UpdateTextBox.value);
}
Существуют дополнительные вызовы методов оповещения, которые можно раскомментировать для тестирования и удалить для производства. На простой и неполной тестовой странице я получил идентификаторы, которые выглядели так: RepeaterCompareItems_ctl06_ACE_Item_IDValue
(для текстового поля для хранения значения) и RepeaterCompareItems_ctl07_ACE_Item
(для расширителя AC) - ваш может быть немного другим, но выглядит практично.
Удачи.