SharePoint中如何利用Jquery Chosen创建新的人员选择器

基于SharePoint平台开发时,人员选择器使用频率是非常高的,但是原生的人员选择器使用太麻烦,而且非常笨拙,非常不友好,特别是对呆在政府部门的老爷们,要让他们手动输入人员,简直就是痴心妄想。总之一句话,越简单越好。

为了让客户满意,必须要对人员选择器进行改造,原生的PeopleEditor彻底抛弃。只能另辟蹊径,寻找适合的JQuery插件,创建新的人员选择器,分析了一下需求,可以归纳新的人员选择器必须支持如下情况:

支持人员的多选,比如像会议、通知需要对多人进行发送,当然也要支持删除。

对于单选的人员选择器,可以删除选中的人员。

不管单选还是多选,支持Jquey AutoComplete那样索引功能。

找来找去,发现Jquery Chosen功能十分强大,完全满足我的需求,更多的功能参照Chosen官网:

http://harvesthq.github.io/chosen/

利用Jquery Chosen进行改造

多选的人员选择器

支持多选,点击X即可取消选中,当然还支持索引,如下所示:

配置也是十分简单,首先你的有一个Select,譬如:

 <asp:DropDownList runat="server" ClientIDMode="Static" ID="ddlPeopleChosen" data-placeholder="选择与会者..."class="chzn-select" multiple style="width:397px;" ></asp:DropDownList>

注意下:data-placeholder意为着未选人员时的默认文本,multiple意味着支持多选。

接下来,需要对其添加数据源,注意,对于单人员选择器,Chosen作者说如果要显示默认的文本提示,需要加入一个空的Option到Select中(第一个)。

注意:我的人员不是从AD中取出,而是我们有一个存放人员的List(人事档案),为了确保该List的人员都可以登陆OA,特意和Web.AllUser中进行比较,当然也可以不必要,这样做保险点。

public static void GetFromCache(SPWeb _currentWeb)
        {
            #region 从缓存中读
            if (System.Web.HttpContext.Current.Cache["peopleList"] == null)
            {
                //People 集合:将SharePoint中的User作为数据源集合加入DropDownList中
                List<People> peopleList = new List<People>();
                //Note: on single selects, the first element is assumed to be selected by the browser.
                //To take advantage of the default text support,
                //you will need to include a blank option as the first element of your select list.
                peopleList.Add(new People());
                People p = null;
                SPList employeeList = _currentWeb.Site.AllWebs["rsgl"].Lists["人事档案"];
                //获取所有可访问站点的用户
                SPUserCollection userCollection = _currentWeb.AllUsers;
                //转换为List集合
                List<SPUser> listUsers = userCollection.Cast<SPUser>().ToList();
                foreach (SPListItem item in employeeList.Items)
                {
                    string displayName = item["Title"].ToStringOrEmpty();
                    //循环便利获取SPUser
                    foreach (SPUser user in listUsers)
                    {
                        if (displayName == user.Name)
                        {
                            string loginName = user.LoginName;
                            p = new People { LoginName = loginName, DisplayName = displayName };
                            peopleList.Add(p);
                        }
                    }
                }

                System.Web.HttpContext.Current.Cache["peopleList"] = peopleList;
            }
            #endregion

        }

接下来就是对DropDownList的绑定:

PeopleHelper.GetFromCache(_currentWeb);
            var peopleListFromCache = (List<People>)System.Web.HttpContext.Current.Cache["peopleList"];
            //与会人
            ddlPeopleChosen.DataSource = peopleListFromCache;
            ddlPeopleChosen.DataTextField = "DisplayName";
            ddlPeopleChosen.DataValueField = "LoginName";
            ddlPeopleChosen.DataBind();

有了数据源之后,在客户端加上Chosen的JS,然后加上如下脚本即可:

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索list
, 数据源
, 选择
, 支持
, httpcontext
, jquery获取多选
Chosen
chosen jquery、chosen.jquery.js、jquery chosen api、chosen.jquery.min.js、chosen.jquery.js官网,以便于您获取更多的相关知识。

时间: 2024-10-30 23:05:46

SharePoint中如何利用Jquery Chosen创建新的人员选择器的相关文章

如何在SharePoint中利用Jquery Chosen创建新的人员选择器

基于SharePoint平台开发时,人员选择器使用频率是非常高的,但是原生的人员选择器使用太麻烦,而且非常笨拙,非常不友好,特别是对呆在政府部门的老爷们,要让他们手动输入人员,简直就是痴心妄想.总之一句话,越简单越好. 为了让客户满意,必须要对人员选择器进行改造,原生的PeopleEditor彻底抛弃.只能另辟蹊径,寻找适合的JQuery插件,创建新的人员选择器,分析了一下需求,可以归纳新的人员选择器必须支持如下情况: 支持人员的多选,比如像会议.通知需要对多人进行发送,当然也要支持删除. 对于

统计及利用查询结果创建新表

一.在SELECT语句中,可以使用集合函数.行集合函数.GROUP BY子句和COMPUTE子句对查询结果进行统计.GROUP BY子句可与行集合函数或集合函数一起使用,而COMPUTE子句只能与行集合函数一起使用. 在SELECT语句中,也可以单纯使用集合函数进行统计,这时它将所有符合条件的数据统计放到一起,形成一行统计数据,这种统计方法叫做标量统计. 例:统计"business"类图书的平均价格 SELECT 'average price'=AVG(price) FROM titl

SharePoint中如何利用HttpModule的Init方法实现全局初始化

我们知道,HttpRuntime中会对每一个Request创建一个HttpApplication对象(HttpApplicationFactory从一个HttpApplication池来拿).对于Global.asax,当创建第一个HttpApplication对象才会执行的Application_Start方法. 然后每一个HttpApplication对象会创建HttpModule对象,然后只执行一次Init方法.但在实际场景中,HttpRuntime会根据请求次数创建多个HttpAppli

SharePoint中如何在管理中心创建Secure Store

SSS(Secure Store service)可以作为核心服务,因为很多其他服务都要求设置这个服务来起作用.它的作用之一就是提供安全数据库,储存和应用程序ID关联的凭据.这些ID用来访问外部数据源的内容.这是通过在Secure Store数据库创建账户来实现的.Secure Store将被用来储存ID,访问仪表板显示的数据源.这些是外部数据源如SQL Server或SAP.MOSS 2007也通过使用应用程序代理ID提供了这个功能.这里的问题是它不遵循最低权限的账户规则. SharePoin

win10 edge 浏览器-html问题,Edge浏览器中,target=&amp;amp;quot;_blank&amp;amp;quot;不能创建新标签

问题描述 html问题,Edge浏览器中,target="_blank"不能创建新标签 第一次打开链接可以成功创建一个新标签页,再次打开别的链接时候,并不能创建新标签页,而是覆盖了上一个标签页,在ie,chrome中一切正常,请问原因是什么,如何解决? 解决方案 Link $("a.link").on("click",function(){ window.open('www.techbrood.com','_blank'); });

看实例学VFP:利用多个表中的字段创建新表

本例中再来复习一下select语句中的inner join子句的知识,关于select语句请参考:select SQL 命令 或sql语言教程.本例的主要操作是在表单的init事件中完成的,在该事件中进行连接查询并将查询结果输出为一个临时表(该表包括了"人员信息表"的"姓名,性别,基本工资"3个字段以及"工资表"的"奖金,生活补助,养老保险"3个字段),最后将该表设为表格控件的数据源.本例应用到了数据环境,并使用"数

在Eclipse中创建新的重构功能

创建 对重构的强大支持是软件开发人员喜爱Eclipse的一个最为重要的原因.而Eclipse还有一个至少和重构不相上下的优点,那就是其近乎无懈可击的可扩展性.这两者的结合意味着我们可以根据自己的需要来创建展新的重构功能. 介绍 重构在现代软件开发过程中扮演着重要的角色,它能够减轻软件开发人员的工作负担,提高软件开发的生产效率.为了阐明重构的重要性,我们在这里引用了developerWorks上David Carew提供的关于重构的教程中的一段话: 现在,一个开发者的工作大部分在于对现有的代码进行

如何在SharePoint中创建一个简单的Visio Web部件图

Visio有许多强大的Mash-up混聚功能,使它可以轻松集成到SharePoint 2010中. 1. 打开Visio 2010,创建新的ITIL图. 2. 绘图如下: 3. 点击后台选项卡(左上角). 4. 点击另存为,选择位置,点击确定,输入Keyword,点击确定.

利用Ajax和jQuery UI创建具有各种定制功能的高度可定制UI

如今,网站比以往更具17813.html">可定制性,http://www.aliyun.com/zixun/aggregation/18736.html">允许用户更改其空间,根据自己的喜好对其进行个性化.个性化的主页或仪表板页面(例如 iGoogle.MyYahoo! 和 MyAOL)日渐普及,大多数 Web 应用程序内甚至也整合了类似的功能.jQuery 库简化了此类复杂 JavaScript 交互的编写,随着 jQuery UI 的引入,这项功能得到了进一步的简化,