项目经历——文本框自动匹配数据库内容

  在一般网站中,用户输入部分内容后,系统会根据数据库自动匹配相应的输入内容,从而提高用户体验度。这里来分享一下用EasyUI做项目中的自动匹配。

主要思路:

  1、通过EasyUI封装好的AJAX,从而异步获取数据库的数据,EasyUI自动进行匹配

  2、一般处理程序+HTML进行实现

项目实现:


一、HTML代码:


<h1>任 务 名 称:<input id="txtWorkName" name="txtWorkName" class="easyui-validatebox" required="true" name="txtWorkName" class="" type="text" /><br /></h1>
<h1>发 布 单 位:<input id="txtPublishDepart" name="txtPublishDepart" class="easyui-validatebox" required="true" name="txtPublishDepart" type="text" /><br /></h1>
<h1>接 收 部 门:<input id="txtReceiveDepart" name="txtReceiveDepart" class="easyui-combobox" data-options="   
                                            url: 'SearchKeys.ashx?method=GetUnit' , //提交到一般处理程序 
                                            method: 'get',  
                                            valueField: 'departmentname',  //要匹配的字段后台值
                                            textField: 'departmentname',  //从数据库获取的显示值
                                            panelWidth: 350,  
                                            panelHeight: 'auto',  " />
</h1>


二、处理程序:

  获取HTML页传过来的参数,从而根据参数执行不同的方法;


  /// <summary>    /// SearchKeys 的摘要说明
    /// </summary>
    public class SearchKeys : IHttpHandler
    {
        private HttpContext context = null;
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            this.context = context;
            string method = context.Request["method"];
            switch (method)
            {
                case "GetUnit":
                    GetUnit(context);
                    break;
                default:
                    break;
            }
        }

        //自动补全
        private void GetUnit(HttpContext context)
        {
            context.Response.ContentType = "json";
            string para = context.Request["para"];
		   //调用B层方法获取数据
            EvaluationSystem.BLL.UnitBaseInfoBLL allUnitBll = new UnitBaseInfoBLL();

            DataSet dtUnitInfo = allUnitBll.GetList("");
		//将DataSet转化成Json格式的数据
            String json = Dataset2JsonCom(dtUnitInfo);
            context.Response.Write(json);
        }


三、转换数据格式

  在B层获取的数据要么是Dataset要么是Datatable,需要转换成Json格式的数据,转换方法:


         #region DataSet转换成Json格式        /// <summary>
        /// DataSet转换成Json格式  
        /// </summary>  
        /// <param name="ds">DataSet</param> 
        /// <returns></returns>  
        public static string Dataset2JsonCom(DataSet ds, int total = -1)
        {
            StringBuilder json = new StringBuilder();

            foreach (DataTable dt in ds.Tables)
            {
                //json.Append("[");
                json.Append(DataTable2JsonCom(dt));
                //json.Append("]");
                //json.Append("");
            } return json.ToString();
        }
        #endregion
        #region dataTable转换成Json格式
        /// <summary>  
        /// dataTable转换成Json格式  
        /// </summary>  
        /// <param name="dt"></param>  
        /// <returns></returns>  
        public static string DataTable2JsonCom(DataTable dt, int pid = -1)
        {
            StringBuilder jsonBuilder = new StringBuilder();
            jsonBuilder.Append("[");
            for (int i = 0; i < dt.Rows.Count; i++)
            {

                jsonBuilder.Append("{");
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    int id = pid;
                    jsonBuilder.Append("\"");
                    dt.Columns[j].ColumnName = dt.Columns[j].ColumnName.ToLower();
                    if (dt.Columns[j].ColumnName == "Name") dt.Columns[j].ColumnName = "text";
                    jsonBuilder.Append(dt.Columns[j].ColumnName);
                    if (dt.Columns[j].ColumnName.ToLower() == "id" && id != -1)
                    {
                        jsonBuilder.Append("\":" + (id * 10 + Convert.ToInt32(dt.Rows[i][j])) + ",");
                    }
                    else
                    {
                        jsonBuilder.Append("\":\"" + dt.Rows[i][j].ToString() + "\",");
                    }
                }

                if (dt.Columns.Count > 0)
                {
                    jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                }
                jsonBuilder.Append("},");
            }
            if (dt.Rows.Count > 0)
            {
                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
            }
            jsonBuilder.Append("]");
            return jsonBuilder.ToString();
        }
        #endregion dataTable转换成Json格式


实现效果:









  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值