1. 后台代码

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Web;
using Contract.Domain;
using WebApp.Common;

namespace HraWeb.Common
{
/// <summary>
/// EntityJsonList 的摘要说明
/// </summary>
public class EntityJsonList : BasePage, IHttpHandler, System.Web.SessionState.IRequiresSessionState
{

public PropertyInfo GetProperyInfo(string Name, PropertyInfo[] ps)
{
PropertyInfo p1 = null;
ps.ToList().ForEach(p =>
{
if (p.Name == Name)
{
p1 = p;
}
});
return p1;
}
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
switch (context.Request["_method"])
{
case "entity":
string entityType = context.Request["entityType"];
info = new Framework.QueryInfo();
info.QueryObject = entityType;
if (!string.IsNullOrEmpty(context.Request["where"]))
{
info.Where.Add("kk", " and " + context.Request["where"]);
}
var keyword = context.Request["keyword"] ?? string.Empty;
if (!string.IsNullOrEmpty(keyword))
{
Hashtable aa=new Hashtable();
aa.Add(context.Request["queryTextFild"].ToString()+"_LK",keyword);
info.AddParam(aa);
//info.Where.Add("kk2",string.Format(" and {0} like '%:{1}%'", context.Request["queryTextFild"],keyword));
}
info.PageSize = int.Parse(HttpContext.Current.Request["rows"]);
int pageIndex = int.Parse(HttpContext.Current.Request["page"]);
info.StartRecord = (pageIndex - 1) * info.PageSize;
info.TotalCount = 1;
if (!string.IsNullOrEmpty(context.Request.QueryString["queryFild"]))
{
string[] field = context.Request.QueryString["queryFild"].Split(new char[] { '|' });
foreach (string q in field)
{
info.AddParam(q, context.Request.QueryString["q"], string.Format(" and {0} like '%:{0}%'", q));
}
}
info = Dao.FindByQueryInfo(info);
Type type = null;
PropertyInfo[] ps = null;
if (info.List != null && info.List.Count > 0)
{
type = info.List[0].GetType();
ps = type.GetProperties();
}
bool idBoolean = false;
foreach (var b in info.List)
{

PropertyInfo idFieldInfo = GetProperyInfo(context.Request["idFild"], ps);
string IdFieldValue = Convert.ToString(idFieldInfo.GetValue(b, null));
if (!string.IsNullOrEmpty(context.Request["defaultValue"]))
{
if (IdFieldValue.Equals(context.Request["defaultValue"]))
{
idBoolean = true;
break;
}
}
}
//if (!string.IsNullOrEmpty(context.Request["defaultValue"]))
{
Framework.QueryInfo tmpInfo = new Framework.QueryInfo();
tmpInfo.QueryObject = entityType;
if (!string.IsNullOrEmpty(context.Request["idFild"]))
tmpInfo.AddParam(context.Request["idFild"], context.Request["defaultValue"]);
var list = Dao.FindList(tmpInfo);
foreach (object obj in list)
{
if (!idBoolean)
{
info.List.Add(obj);
}
}
}
DataGridJson d = new DataGridJson(info.TotalCount, info.List);
HttpContext.Current.Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(d));
break;
case "dict":
var t = GetDictType(context.Request["dictType"]);
IList<SysDict> dictList= Holworth.Utility.Utility.ListToT<SysDict>(t);
//根据关键词使用linq进行二次过滤
var keyword2 = context.Request["keyword"] ?? string.Empty;
if (!string.IsNullOrEmpty(keyword2))
{
dictList = dictList.Where(x => x.Name.Contains(keyword2)).ToList();
}
string ss = Newtonsoft.Json.JsonConvert.SerializeObject(dictList);
context.Response.Write(ss);
break;
case "aa":
var ts = GetDictType(context.Request["dictType"]);
string sss = Newtonsoft.Json.JsonConvert.SerializeObject(ts);
context.Response.Write(sss);
break;
}
}

public bool IsReusable
{
get
{
return false;
}
}
}
}

2.下拉框 实体前台代码

this.SetEntityCombo = function (obj, entityType, textField, columns, where, idFild, queryFild) {
var url = '/common/EntityJsonList.ashx?entityType=' + entityType + '&_method=entity&tmp=' + Math.random() + '&queryTextFild=' + textField;
if (where) {
url += "&where=" + where;
}
if (obj.val() != "") {
url += "&defaultValue=" + obj.val();
}

var id = 'Id';
if (idFild) {
id = idFild;
}
url += "&idFild=" + id;
// if (queryFild) {
// url += "&queryFild=" + queryFild;
// }
obj.combogrid({
panelWidth: 500,
idField: id,
textField: textField,
url: url,
method: 'get',
delay:1000,
pagination: true, //是否分页
rownumbers: true, //序号
pageSize: 10, //每页显示的记录条数,默认为10
pageList: [10], //可以设置每页记录条数的列表
columns: columns,
striped: true,
editable: true,
collapsible: false, //是否可折叠的
fit: true, //自动大小
keyHandler: {
up: function () { //【向上键】押下处理
//取得选中行
var selected = obj.combogrid('grid').datagrid('getSelected');
if (selected) {
//取得选中行的rowIndex
var index = obj.combogrid('grid').datagrid('getRowIndex', selected);
//向上移动到第一行为止
if (index > 0) {
obj.combogrid('grid').datagrid('selectRow', index - 1);
}
} else {
var rows = obj.combogrid('grid').datagrid('getRows');
obj.combogrid('grid').datagrid('selectRow', rows.length - 1);
}
},
down: function () { //【向下键】押下处理
//取得选中行
var selected = obj.combogrid('grid').datagrid('getSelected');
if (selected) {
//取得选中行的rowIndex
var index = obj.combogrid('grid').datagrid('getRowIndex', selected);
//向下移动到当页最后一行为止
if (index < obj.combogrid('grid').datagrid('getData').rows.length - 1) {
obj.combogrid('grid').datagrid('selectRow', index + 1);
}
} else {
obj.combogrid('grid').datagrid('selectRow', 0);
}
},
enter: function () { //【回车键】押下处理

obj.combogrid('hidePanel');
},
query: function (keyword) { //【动态搜索】处理
//设置查询参数
var queryParams = obj.combogrid("grid").datagrid('options').queryParams;
queryParams.keyword = keyword;
obj.combogrid("grid").datagrid('options').queryParams = queryParams;
//重新加载
obj.combogrid("grid").datagrid("reload");

obj.combogrid("setValue", keyword);
}
},
mode: 'remote',
fitColumns: true
});
}

数据字典下拉框前台代码

this.SetDict = function (obj, dicType) {
obj.combogrid({
panelWidth: 250,
idField: 'Code',
textField: 'Name',
url: '/Common/EntityJsonList.ashx?_method=dict&dictType=' + dicType + "&tmp=" + Math.random()+'&queryTextFild=Name',
method: 'get',
delay: 1000,
columns: [[
{ field: 'Name', title: '名称', width: 100 },
{ field: 'Code', title: '编码', width: 100 }
]],
striped: true,
editable: true,
collapsible: false, //是否可折叠的
fit: true, //自动大小
keyHandler: {
up: function () { //【向上键】押下处理
//取得选中行
var selected = obj.combogrid('grid').datagrid('getSelected');
if (selected) {
//取得选中行的rowIndex
var index = obj.combogrid('grid').datagrid('getRowIndex', selected);
//向上移动到第一行为止
if (index > 0) {
obj.combogrid('grid').datagrid('selectRow', index - 1);
}
} else {
var rows = obj.combogrid('grid').datagrid('getRows');
obj.combogrid('grid').datagrid('selectRow', rows.length - 1);
}
},
down: function () { //【向下键】押下处理
//取得选中行
var selected = obj.combogrid('grid').datagrid('getSelected');
if (selected) {
//取得选中行的rowIndex
var index = obj.combogrid('grid').datagrid('getRowIndex', selected);
//向下移动到当页最后一行为止
if (index < obj.combogrid('grid').datagrid('getData').rows.length - 1) {
obj.combogrid('grid').datagrid('selectRow', index + 1);
}
} else {
obj.combogrid('grid').datagrid('selectRow', 0);
}
},
enter: function () { //【回车键】押下处理
obj.combogrid('hidePanel');
},
query: function (keyword) { //【动态搜索】处理
//设置查询参数
var queryParams = obj.combogrid("grid").datagrid('options').queryParams;
queryParams.keyword = keyword;
obj.combogrid("grid").datagrid('options').queryParams = queryParams;
//重新加载
obj.combogrid("grid").datagrid("reload");

obj.combogrid("setValue", keyword);
}
},
mode: 'remote',
fitColumns: true
});
}

easyui combogrid 下拉框 智能输入的更多相关文章

  1. easyui combogrid下拉表格的分页/按键/动态搜索

    作者:xfl4629712  <  easyui combogrid下拉表格的分页/按键/动态搜索  > 需求: 1.下拉框下拉时出现表格: 2.表格带分页功能: 3.可以使用向上键.向下 ...

  2. 关于easyui combobox下拉框实现多选框的实现

    好长时间没有更博了,一是因为最近真的比较忙,二是因为自己是真的偷懒了,哈哈 好啦,这篇博客主要是总结一些关于easyui combobox下拉框实现多选框的实现,包括前台界面的展示,和后台对数据的获取 ...

  3. easyui combobox下拉框复制后再禁用,点击不会出现下拉框

    easyui combobox下拉框禁用,点击不会出现下拉框 需要做到,在给easyui combobox赋值后,再禁用easyui combobox 解决办法: $("#time-sele ...

  4. easyui combotree下拉框多选赋值

    发现jquery.easyui.min.js 1.3.4版本的用setValues给多选下拉框赋值不成功,只能用1.3.1版本的 Html代码: <input id="ProductL ...

  5. JS为Select下拉框添加输入功能

    JavaScript使用parentNode.nextSibling.value实现的本功能,实际上你会发现网页上有两个控件元素,一个是Select,一个是input,使用CSS将input覆盖于se ...

  6. easyui combobox下拉框文字超出宽度有横向滚轮

    //下拉框显示横向滚轮 $(".combo").mouseenter(function(){ $(this).prev().combobox("showPanel&quo ...

  7. easyUI combobox下拉框很长,easyUI combobox下拉框如何显示滚动条的解决方法

    如下图,combobox下拉框里内容很多时,会导致下拉框很长,很不美观. 如何使得combobox下拉框显示滚动条 方法:把属性panelHeight:"auto"注释掉即可. $ ...

  8. easyui combobox下拉框中显示大于号小于号的问题

    前两天同事做了个功能,通过勾选下拉框里的值进行列表查询,结果下拉框里的值是“0<t<=2”.“2<t<=5”.“t>5”这样的. combobox是用脚本渲染出来的,里面 ...

  9. easyui combo下拉框多选框

    按照自己的方式,先晒下效果图: 选一个值,那么就在input里面显示一个,去掉勾选,那么input就会少一个 其实做法很简单,今天就是快下班了,闲着没事加篇博客而已,下面带上代码. 1.页面的展示,i ...

随机推荐

  1. offsetTop/offsetHeight scrollTop/scrollHeight 的区别

    offsetTop/offsetHeight   scrollTop/scrollHeight  这几个属性困扰了我N久,这次一定要搞定. 假设 obj 为某个 HTML 控件. obj.offset ...

  2. 字符串的问题(substr,find用法)

    链接:https://www.nowcoder.com/acm/contest/77/C来源:牛客网 字符串的问题 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他 ...

  3. Java-Runoob-高级教程:Java 发送邮件

    ylbtech-Java-Runoob-高级教程:Java 发送邮件 1.返回顶部 1. Java 发送邮件 使用Java应用程序发送 E-mail 十分简单,但是首先你应该在你的机器上安装 Java ...

  4. Java-API-POI:POI 笔记

    ylbtech-Java-API-POI:POI 笔记 1. 笔记一返回顶部 1. 1,POI对JDK版本支持及XLSX (2017-04-01 13:51:39)对JDK6的支持,最后版本是POI- ...

  5. 存储过程与SQL语句怎么选择

    应用存储过程的优点:1.具有更好的性能存储过程是预编译的,只在创建时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,因此使用存储过程可以提高数据库执行速度.2 ...

  6. 跨境B2B电商

    主要处理问题:解决整个支付和流通环节,各国双方的供应商和销售商只关注下单支付后就可以拿到货物,中间环节由平台处理,支付和流通环节消费越少速度越快服务越好. 主体业务 1.合同处理. 2.货币支付,互换 ...

  7. python实现cifar10数据集的可视化

    在学习tensorflow的mnist和cifar实例的时候,官方文档给出的讲解都是一张张图片,直观清晰,当我们看到程序下载下来的数据的时候,宝宝都惊呆了,都是二进制文件,这些二进制文件还不小,用文本 ...

  8. C#如何消除绘制图形缩放时抖动,总结

    一.手动双缓冲 首先定义一个BitmapBitmap backBuffer = new Bitmap(画布宽度, 画布高度);然后获取这个Bitmap的GraphicsGraphics graphic ...

  9. 构建一个完整的DNS系统

    人心不同 各如其面 如之奈何 如之奈何 ——引子   我们的目标很明了——构建一个具有根的.私有的DNS(Domain Name System). 这里不会陈述太多关于DNS与BIND的基础知识,如果 ...

  10. PDO execute 执行错误

    PHP   PDO execute 执行错误,原因分析 $dbcon->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);或者 $db ...