C#---ASP页面的下拉框模糊查询功能

  • 基础方法支持:

一. DataTable 转换成 Json

  换句话说如何在ASP.NET将一个DataTable序列化为 Json数组,或者如何从一个DataTable返回一个Json字符串。  

  使用 JavaScriptSerializer.

  首先我们添加System.Web.Script.Serialization命名空间,如下:

    using System.Web.Script.Serialization;

  JavaScriptSerializer这个类是由异步通信层内部使用来序列化和反序列化数据。如果序列化一个对象,就使用序列化方法。反序列化Json字符串,使用Deserialize或DeserializeObject方法。在这里,我们使用序列化方法得到Json格式的数据。代码以下:

public static class Data2Json
{
    public static String convertJson(DataTable dt)
    {
        JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
        javaScriptSerializer.MaxJsonLength = Int32.MaxValue;
        ArrayList arrayList = new ArrayList();
        foreach (DataRow dataRow in dt.Rows)
        {
            Dictionary<string, object> dictionary = new Dictionary<string, object>();
            foreach (DataColumn dataColumn in dt.Columns)
            {
                dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName].ToString());
            }
            arrayList.Add(dictionary);
        }
        return javaScriptSerializer.Serialize(arrayList);
    }
}

二. 加入一般处理程序,将上一步的Json字符串写入HTTP响应输出流,传到前端页面

 

<%@ WebHandler Language="C#" Class="Xcode" %>

using System;
using System.Web;
using SysManage;
using System.Data;
public class Xcode : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "application/json";
        string str = context.Request["type"];
        string sql = string.Format("select * from XCode where XCODE like ‘{0}%‘", str);
        Database dt = new Database();
        DataTable data = dt.ExecuteSql(sql);

        context.Response.Write(Data2Json.convertJson(data));
    }

    public bool IsReusable
    {
        get { return false; }
    }
}
  • 前端实现方法:

 其中要使用:jquery 的 autocomplete.js ,自行搜索引用即可

<script type="text/javascript">

        function dataFind() {

            var fl = $("input[name=‘Rblflcode‘]:checked").val();
            $.ajax({
                contentType: "application/json",
                url: "../Xcode.ashx?type=" + fl,
                dataType: "json",
                success: function (msg) {
                    if (msg == null) {
                    }
                    else if (msg != null) {
                        jQuery(function ($) {
                            $("#flxzTb").autocomplete(msg, {
                                minChars: 0,
                                autoFill: false,         //是否选多个,用","分开
                                mustMatch: false,     //是否全匹配, 如数据中没有此数据,将无法输入
                                matchContains: true,         //是否全文搜索,否则只是前面作为标准
                                scrollHeight: 300,
                                scroll: true,
                                width: $("#flxzTb").width(),
                                multiple: false,
                                formatItem: function (row, i, max) {           //显示格式
                                    return "<span style=‘width:" + $("#flxzTb").width() + "px;float:left;font-style: normal;font-weight:normal;‘ >" + "[" + row.XCODE + "]---" + row.flmc  + " </span>";
                                },
                                formatMatch: function (row, i, max) {          //以什么数据作为搜索关键词,可包括中文,
                                    return row.flmc;
                                },
                                formatResult: function (row) {
                                    return  row.flmc ; //返回结果
                                }
                            });
                        });
                    }
                }
            });
        }
</script>

  其中  ID = flxzTb 的TextBox控件用于查询显示。 url: "../Xcode.ashx?type=" + fl, 调用 Xcode.ashx 来处理传入的 xcode 字段用于数据库筛选。

  当数据库中存有数据时,通过在TextBox框内键入内容会自动进行相应的内容匹配,以下拉的形式进行显示。

原文地址:https://www.cnblogs.com/JesseP/p/10255322.html

时间: 2024-10-13 01:58:39

C#---ASP页面的下拉框模糊查询功能的相关文章

基于bootstrap selectpicker ,实现select下拉框模糊查询功能

1.html代码块 需要引入bootstrap的css js jquery bootstrap.css bootstrap-select.min.css jquery-1.11.3.min.js bootstrap.min.js bootstrap-select.min.js <select class="selectpicker show-tick" style="outline: none;width:200px;" data-live-search=&q

js实现下拉框模糊查询

keyup方法触发模糊查询 list : Array<any> //下拉列表所有内容 filtList:Array<any> //过滤后的内容 inputContent : string //输入的内容 方法一,filter()遍历: filtList = list.filter(data => { return data && data.toString().indexOf(inputContent)!==-1 }) 方法二,for循环: for(const

Jquery+Ajax下拉框级联查询

Jquery代码 <script type="text/javascript">          $(function(){ //提交事件           $("#ImageButton1").click(function(){ //省Id        var provinceId=$("#selProvince").val(); //市Id        var cityId=$("#selCity").

JS为Select下拉框增加输入功能

JavaScript使用parentNode.nextSibling.value实现的本功能,实际上你会发现网页上有两个控件元素,一个是Select,一个是input,使用CSS将input覆盖于select之上,再使用JS将下拉框的值赋值给input,实际上是用input模拟出了select的功能,思路很新颖,也不知到底有多少人需要select可输入文字的功能,下面是详细的实现代码:前端资源分享 .代码   <div style="position:relative;">

Java Swing应用程序 JComboBox下拉框联动查询

在web项目中,通过下拉框.JQuery和ajax可以实现下拉框联动查询. 譬如说,当你查询某个地方时,页面上有:省份:<下拉框省份> 市区:<下拉框市区> 县乡:<下拉框县乡> 街道:<街道下拉框> 查询 譬如说,你选择了省:江苏省,那么在市区中只会显示江苏省的市区 譬如:(网上的图) 具体详细实现可以参考,写得挺好的:http://blog.csdn.net/sinat_24491773/article/details/50810471 那么在swing

ASP.NET MVC 下拉框级联

这个是效果图 首先分析下,我们需要两个下拉框 首先要动态绑定班级的,这个很好实现,怎么让学生下拉框也出来,并显示请选择学生呢? public ActionResult Index() { ViewData["class"] = getByItem(); ViewData["stu"] = new List<SelectListItem>() { new SelectListItem {Text = "请选则学生", Value = &

android完成注册页面的下拉框及单复选框(1)

package com.example.dell.mylogin; import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.Button;import android.widget.Che

读取mysql中的特定列值放入页面的下拉框中

1.使用的技术:JSP,Spring JDBC(Mapper) 2.代码 2.1 接口 public interface IMeetingRoomDao { public List<Mrcap> selectCap(); public List<Mrfloor> selectFloor(); } 2.2 实现类 @Override public List<Mrcap> selectCap() { List<Mrcap> caplist = new Array

基于ecshop 下拉框模糊匹配的集成

步骤 1. 下载文件包 http://download.csdn.net/detail/xiawu1990/8427243 并且解压 2. 将 dropbg.gif 放到 admin/images 目录下 3. 将 searchbox.js 放到 admin/js 目录下 4. 将styles.css放到 admin/styles 目录下 5. 将 <link href="styles/styles.css" rel="stylesheet" type=&qu