对于下一个场景,我已经搞砸了几个小时:
- 当用户在文本框中键入一些文本(某种自动完成扩展器)时,动态填充复选框列表。
正如我之前告诉过你的,我已经搞砸了几个小时(几乎一整天),仍然找不到正确的方法。起初我想到的是使用动态填充控件和网络方法,但无法使其工作。有什么建议么?
提前致谢。
已编辑:我正在尝试做的是一种 hotmail 功能。当您点击新电子邮件然后点击“收件人:”按钮时,它会弹出一个小窗口。
对于下一个场景,我已经搞砸了几个小时:
正如我之前告诉过你的,我已经搞砸了几个小时(几乎一整天),仍然找不到正确的方法。起初我想到的是使用动态填充控件和网络方法,但无法使其工作。有什么建议么?
提前致谢。
已编辑:我正在尝试做的是一种 hotmail 功能。当您点击新电子邮件然后点击“收件人:”按钮时,它会弹出一个小窗口。
这是代码:
首先,我使用以下函数创建了名为 Lookup.asmx 的 asmx Web 服务:
[WebMethod]
public GetUsersResponse[] LoadUsers()
{
if (HttpContext.Current.Session["Users"] != null)
{
return (List<GetUsersResponse>)HttpContext.Current.Session["Users"];
}
return new List<GetUsersResponse>();
}
[WebMethod]
public GetUsersResponse[] GetUsers(string query)
{
var users = new List<string>
{
"Brad Pitt",
"Brad Pitt2",
"Brad Pitt3",
"Angelina Jolie",
"Jeniffer Aniston",
"Tom Cruise",
"Katie Holmes",
"Tom Hanks",
"Sean Pen",
"Jude Law",
"Bruce Willis"
};
var returnUsers = users.Where(s => s.ToLower().Trim().StartsWith(query.ToLower().Trim()))
.Select(s => new GetUsersResponce { Name = s })
.ToArray();
HttpContext.Current.Session["Users"] = returnUsers;
HttpContext.Current.Session["Query"] = query;
return returnUsers;
}
public class GetUsersResponse
{
public string Name { get; set; }
}
确保在 web 服务中取消注释 [System.Web.Script.Services.ScriptService] 注释。然后我使用了这个 jquery/html(不要忘记引用 jquery):
<script type="text/javascript">
$(function () {
$.ajaxSetup({ type: 'POST', dataType: 'json', contentType: 'application/json', data: {} });
$.ajax({
url: 'Lookup.asmx/LoadUsers',
data: '',
success: function (data) {
var responseJson = data.d;
if (responseJson.length > 0) {
$.each(responseJson, function () {
$("#result").append("<li><input type='checkbox'>" + this.Name + "</input></li>")
});
}
}
});
$("#txtType").keyup(function () {
var input = $(this).val();
$("#result").html("");
if (input && input.length > 3) {
$.ajax({
url: 'Lookup.asmx/GetUsers',
data: '{ "query": "' + input + '" }',
success: function (data) {
var responseJson = data.d;
if (responseJson.length > 0) {
$.each(responseJson, function () {
$("#result").append("<li><input type='checkbox'>" + this.Name + "</input></li>")
});
}
}
});
}
});
});
</script>
<table cellpadding="5">
<tr>
<td>Search</td>
<td><asp:TextBox ID="txtType" runat="server" ClientIDMode="Static" /></td>
</tr>
<tr>
<td colspan="2">
<ul id="result" style="list-style: none;">
</ul>
</td>
</tr>
</table>
然后您可以轻松地使用 jquery 查看选中了哪些复选框。