FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 1777|回复: 1
打印 上一主题 下一主题

jquery autocomplete 如何实现key与value同时返回

[复制链接]
跳转到指定楼层
楼主
发表于 2014-2-28 08:27:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
jquery autocomplete 如何实现key与value同时返回。即key写入hidden控件,value在textbox控件显示。
沙发
 楼主| 发表于 2014-2-28 23:35:46 | 只看该作者
服务器端:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Services;
using System.Web.Services;
using EF.BLL;
using EF.DAL;

namespace EF.APP
{
    /// <summary>
    /// SearchTeachingClass 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
     [System.Web.Script.Services.ScriptService]
    public class SearchTeachingClassService : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
        /// <summary>
        /// 主要是这个方法就是查询数据变为一个字符数组。
        /// </summary>
        /// <param name="q"></param>
        /// <returns></returns>
        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string[] GetData(string q)
        {
            var s = q.Split('#')[0].ToUpper();
            var semesterID = Convert.ToInt32(q.Split('#')[1]);
            var data = new List<string>();
            var db = new EFSystemDataEntities();
            using (var teachingClassBll = new TeachingClassBll(db))
            {
                var query =
                    teachingClassBll.Filter(
                        c =>(c.SemesterID==semesterID)&&(c.ClassCode.Contains(s) || c.ClassName.Contains(s) || c.ClassNamePY.Contains(s))).Take(20);
                foreach (var teachingClass in query)
                {
                    data.Add(string.Format("{0}#{1}", teachingClass.ClassName, teachingClass.ID));
                }
            }
            return data.ToArray();
        }
    }

}
客户端:
Ext.onReady(function () {
            var selid = $("#<%=HiddenFieldSemeter.ClientID %>").val();//为了给后台传入一个查询参数
            $("#<%=txtTeachingClass.ClientID %>").autocomplete({
                source: function (request, response) {
                    $.ajax({
                        url: '<%=ResolveUrl("~/ClassWorkLoad/SearchTeachingClassService.asmx/GetData") %>',
                        data: "{ 'q': '" + request.term + "#" + selid + "'}",
                        dataType: "json",
                        type: "POST",
                        contentType: "application/json; charset=utf-8",
                        success: function (data) {
                            response($.map(data.d, function (item) {
                                return {
                                    label: item.split('#')[0],
                                    val: item.split('#')[1]
                                }
                            }))
                        },
                        error: function (response) {
                            alert(response.responseText);
                        },
                        failure: function (response) {
                            alert(response.responseText);
                        }
                    });
                },
                select: function (e, i) {
                    $("#<%=HiddenFieldTeachinClass.ClientID %>").val(i.item.val);
            },
                minLength: 1,
                extraParams: { key: function() { return $("#<%=ddlCurrentSemester.ClientID %>").val(); } }
            });

自问自答了,供参考。其实我对返回json还有点没搞懂。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-27 01:29 , Processed in 0.042913 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表