“select2” JS jquery下拉列表插件(ajax读取、关键字过滤)

近期项目中的需求,要求做一个带查询过滤的、实时数据库调取数据的下拉列表控件,然后就找到了这个select2控件,直接$(obj).select2();就可以实现输入过滤效果,当然其还有ajax实时调用功能,适当调整后发现这个控件从外观、体验、性能上都能满足要求。

不过网上这控件的帮助文档都很粗,即便是关于ajax帮助文档也大多都是照搬官方的不实用,所以把这次项目中实用的部分摘取出来供以后需要时使用。

    $.id('#select_id').select2({
        ajax: {
            type: 'POST',
            url: '/api/json.aspx',
            delay: 300,
            data: function (params) {
                var query = {
                    q: params.term
                }
                return query;
            },
            processResults: function (data, params) {
                return { results: data };
            },
            cache: true
        }
    });

 

解释一下代码中的各参数意义:
type:ajax请求post或get
url:ajax请求地址
delay:用户输入查询内容后延迟xxx毫秒即向ajax查询(如果不设置的话用户打一个字母就会请求一次ajax,很浪费性能)
data:ajax请求传入参数,其中params.term指的是用户输入的查询内容,默认不需要修改此块代码。
processResults:返回结果处理,默认不需要修改此块代码。代码中不写这段可能控件取不到值。返回的json应包含id(保存值)、text(显示文本)字段。
cache:是否有缓存,实际效果体验不出缓存有什么明显的好处,总之不常更改的数据这个功能打开就好。

控件效果:

github链接:https://github.com/select2/select2/

官网API:https://select2.org/

VisualStudio .NET 项目缺少依赖生成失败

现在使用VS开发.NET程序一般引用扩展组件都会使用nuget进行管理,但有时从TFS、SVN获取文件下来之后直接生成提示生成失败,报错内容是各种找不到xxxx.dll引用,即便清理重新生成也不管用,后来研究出一个解决方案。

1、在解决方案右键点击“还原nuget包”,如果提示“所有程序包都已安装,没有要还原的内容。”后生成还是提示缺少文件,则继续往下看。

2、在Windows资源管理器中找到项目的位置,删除package文件夹。

3、删除整个package后,再次点击第一步的“还原nuget包”。这时页面最下方会有生成进度条,等待其完成。

4、获取完成后,记得一定要重启VS,再次生成应该大部分引用都能关联上,生成也能成功了。此时检查各项目引用还有感叹号的,需要手动重新引用下。

Windows 加入域 “找不到网络路径” 解决方案

这里将网上搜集和自己的一些处理方法列在这里,逐步尝试。我也是在网上搜这那一堆有用没用的,最后解决了问题。

错误的效果就是加域输入完正确的账户密码后,弹窗提示“找不到网络路径”。

1、检查服务tcp/ip netbios helper、COMPUTER BROWSER是否启动。

2、客户机的首选DNS需要设置为域控IP,且nslookup对应域名应该可以解析到正确的ip上。

3、打开“AD用户和计算机”的administrator账户,有可能用户登录名@后面是空的,需要我们手动指定一下,然后再次尝试。

4、确定上述2条没有问题,用客户机telnet 域控IP 的445端口,不通则进行如下操作:

4.1、查看对应网卡适配器的“Microsoft 网络的文件和打印机共享”是否打开,若没有默认勾选,则请勾选,并重启电脑,再次尝试能否加域。

4.2、域控服务器开启Windows共享(默认建完域就已经打开了,谨慎起见自己建一个文件夹手动再共享一次),并将445端口加入防火墙白名单。

总之客户机能连通域控的windows共享,加域应该就能成功。

下图对应的条目3、4