您可以根据需要使用类来进行选择(正如其他人提到的那样),但对我来说,如果您只是为了这个目的而添加一个类并且您有一个 ID,那么您可以select with,好像有点浪费。
我创建了一个非常简单的示例,它显示了您的操作方式(使用 [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();
}
如果您创建一个测试 webapp 并以此作为测试页面并运行它,自动完成功能将正常工作。
由于这不适用于您的应用,您需要检查以确保您使用的选择器 ([id$=txtEditIngredients]) 确实匹配某些内容。要对此进行测试,请将此代码放在您的 document.ready 事件之前的位置:
alert($('[id$=txtEditIngredients]').size());
这应该会提醒一个数字,其中包含 GridView 中的行数。如果不是,请查看源代码并在您的某一行中找到该文本字段以查看 ID 是什么,并相应地调整您的选择器。
编辑:我只是想补充一点,由于 .Net 控件命名结构,我一直在 jQuery/.Net 中使用 [id$=controlName],并且每次都能正常工作,所以这根本不应该是一个问题。