Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态填充复选框列表控件_C#_Asp.net_Ajax_Asp.net Ajax - Fatal编程技术网

C# 动态填充复选框列表控件

C# 动态填充复选框列表控件,c#,asp.net,ajax,asp.net-ajax,C#,Asp.net,Ajax,Asp.net Ajax,我已经为下一个场景忙乱了几个小时: 当用户在textbox(某种类型的AutoCompleteXtender)中键入某些文本时,动态填充复选框列表 正如我之前告诉过你的,我已经忙乱了几个小时(几乎一整天),仍然找不到正确的方法。我最初想到的是使用dynamicpopulate控件和webmethod,但无法使其工作。有什么建议吗 提前谢谢 编辑:我想做的是一种hotmail功能。当你们点击新邮件,然后点击“收件人:”按钮,它会弹出一个小窗口 以下是代码: 首先,我使用以下函数创建了名为Loo

我已经为下一个场景忙乱了几个小时:

  • 当用户在textbox(某种类型的AutoCompleteXtender)中键入某些文本时,动态填充复选框列表
正如我之前告诉过你的,我已经忙乱了几个小时(几乎一整天),仍然找不到正确的方法。我最初想到的是使用dynamicpopulate控件和webmethod,但无法使其工作。有什么建议吗

提前谢谢

编辑:我想做的是一种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; } 
}
[WebMethod]
公共GetUsersResponse[]LoadUsers()
{
if(HttpContext.Current.Session[“用户”]!=null)
{
返回(列表)HttpContext.Current.Session[“用户”];
}
返回新列表();
}
[网络方法]
公共GetUsersResponse[]GetUsers(字符串查询)
{
var users=新列表
{
“布拉德·皮特”,
“布拉德·皮特2”,
“布拉德·皮特3”,
“安吉丽娜·朱莉”,
“杰尼弗·安妮斯顿”,
“汤姆·克鲁斯”,
“凯蒂·赫尔姆斯”,
“汤姆·汉克斯”,
“肖恩·潘”,
“裘德·罗”,
“布鲁斯·威利斯”
};
var returnUsers=users.Where(s=>s.ToLower().Trim().StartsWith(query.ToLower().Trim()))
.Select(s=>newgetUsersResponse{Name=s})
.ToArray();
HttpContext.Current.Session[“用户”]=returnUsers;
HttpContext.Current.Session[“Query”]=Query;
返回用户;
}
公共类GetUsersResponse
{
公共字符串名称{get;set;}
}
确保在webservice中取消注释[System.Web.Script.Services.ScriptService]注释。然后我使用了jquery/html(别忘了引用jquery):


$(函数(){
$.ajaxSetup({type:'POST',dataType:'json',contentType:'application/json',data:{}});
$.ajax({
url:'Lookup.asmx/LoadUsers',
数据:“”,
成功:功能(数据){
var responseJson=data.d;
如果(responseJson.length>0){
$.each(responseJson,function(){
$(“#结果”).append(“
  • ”+this.Name+”
  • ”) }); } } }); $(“#txtType”).keyup(函数(){ var输入=$(this.val(); $(“#结果”).html(“”); 如果(输入和输入长度>3){ $.ajax({ url:'Lookup.asmx/GetUsers', 数据:“{”查询“'+input+“}”, 成功:功能(数据){ var responseJson=data.d; 如果(responseJson.length>0){ $.each(responseJson,function(){ $(“#结果”).append(“
  • ”+this.Name+”
  • ”) }); } } }); } }); }); 搜寻

    然后可以轻松地使用jquery查看选中了哪些复选框

    您是否有一个文本框,用户在其中键入文本,并在每个按键笔划上相应地创建复选框列表?您的查找列表有多大?我将在用户列表中执行搜索(在键入4个字母后开始搜索)。就像AutoCompleteXtender一样。理想情况下,您应该使用jquery和ajax调用一些自定义web服务功能来完成用户查找。然后可以动态构建无序的复选框列表。如果您计划使用回发来完成这项工作,它将非常有用slow@LuisHernandez请将其标记为答案,如果有效,请+1抱歉,我有点忙,我刚刚实现了您提供的解决方案,并且它有效。现在的问题是,它在另一个文本框回发时丢失了它的属性。非常感谢你的回答。非常感谢:)
    <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>