Вы можете использовать класс для выбора, если хотите (как уже упоминали другие), но для меня, если вы добавляете класс именно для этой цели и у вас есть идентификатор, который вы можете выбрать с, кажется, пустая трата.
Я создал очень простой пример, и он показывает, что способ, которым вы это делаете (с [id $ = txtField] в качестве вашего селектора, действительно работает с плагином. Вот код .aspx:
<head runat="server">
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="jquery.autocomplete.min.js"></script>
<link type="text/css" href="jquery.autocomplete.css" rel="stylesheet" />
<script type="text/javascript">
$(function() {
$('[id$=txtTest]').autocomplete(["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "pearl"], {
mustMatch: true
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView runat="server" ID="grdView" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox runat="server" ID="txtTest" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
А вот обновления кода, необходимые для запуска теста:
protected void Page_Load(object sender, EventArgs e)
{
List<string> data = new List<string>();
data.Add("test");
data.Add("test2");
this.grdView.DataSource = data;
this.grdView.DataBind();
}
Если вы создадите тестовое веб-приложение с этим именем в качестве тестовой страницы и запустите его, автозаполнение будет работать нормально.
Поскольку это не работает для вашего приложения, вам нужно проверить, чтобы убедиться, что используемый вами селектор ([id $ = txtEditIngredients]) действительно соответствует чему-то. Чтобы проверить это, поместите этот код перед ним в событие document.ready:
alert($('[id$=txtEditIngredients]').size());
Это должно предупредить число с количеством строк в вашем GridView. Если этого не произойдет, просмотрите источник и найдите это текстовое поле в одной из строк, чтобы увидеть, что это за идентификатор, и соответствующим образом настройте селектор.
Редактировать: Я просто хотел добавить, что я все время использую [id $ = controlName] в jQuery / .Net из-за структуры имен элементов управления .Net, и она работает каждый раз, поэтому это не должно быть проблемой вообще.