设为首页 收藏本站
查看: 1063|回复: 0

[经验分享] sharepoint gridview webpart

[复制链接]

尚未签到

发表于 2015-9-27 14:41:13 | 显示全部楼层 |阅读模式
  http://blog.iyunv.com/dxfswpi/archive/2009/04/03/4046871.aspx
  



using System;
using System.Runtime.InteropServices;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;
using System.Xml;
using System.Data;
using System.Collections.Generic;
using System.Drawing;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace GetUsersDataList
{
    [Guid("d6e547b8-fdbd-4166-9b78-f73ff03c260a")]
    public class GetUsersListData : System.Web.UI.WebControls.WebParts.WebPart
    {
        //private GridView _gridview;
        //private SqlDataSource _sqldatasource;

        /// <summary>
        /// 显示当前所在的SharePoint用户组
        /// </summary>
        ///
        private List<string> currentUserGroup = null;
        private SPSite site = null;
        private SPWeb web = null;
        private SPList list = null;
        ///<summary>
        ///保存GridView 数据源
        /// </summary>
        ///
        private DataTable _gvtable;
        public DataTable GVTable
        {
            get
            {
                return _gvtable;
            }
            set
            {
                _gvtable = value;
            }
        }
        /// <summary>
        /// 显示条目的GridView控件
        /// </summary>
        ///
        private GridView gridView =null;
        public SPSite SP_Site
        {
            get
            {
                return SPContext.Current.Site;
            }
        }
        public SPWeb SP_Web
        {
            get
            {
                return SPContext.Current.Web;
            }
        }
        /// <summary>
        /// 请输入是否对显示条目启用目标访问群体控制,输入1为启用,输入2为禁用,格式形如:1
        /// </summary>
        ///
        private string _isAccessed = "2";
        [Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("是否对显示条目启用目标访问群体控制"), WebDescription("请输入是否对显示条目启用目标访问群体控制,输入1为启用,输入2为禁用,格式形如:1")]
        public string IsAccessed
        {
            get
            {
                return _isAccessed;
            }
            set
            {
                if (value.Equals("1") || value.Equals("2"))
                {
                    this._isAccessed = value;
                }
                else
                {
                    throw new Exception("请注意[是否对显示条目启用目标访问群体控制]的输入格式:\n输入1为启用,输入2为禁用");
                }
            }
        }

        private string _caml;
        /// <summary>
        /// 请输入Caml
        /// </summary>
        ///
        [Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("Caml"), WebDescription("请输入Caml")]
        public string Caml
        {
            get
            {
                return _caml;
            }
            set
            {
                _caml = value;
            }
        }
        private string _siteName;
        /// <summary>
        /// 请输入网站集URL,格式形如:http://phosphor:8080/sites
        /// </summary>
        ///
        [Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("网站集URL"), WebDescription("请输入网站集URL,形式格式如:http://phosphor:8080/sites")]
        public string SiteName
        {
            get
            {
                return _siteName;
            }
            set
            {
                _siteName = value;
            }
        }
        private string _webName;
        /// <summary>
        /// 请输入网站URL,格式形式如:umbrella
        /// </summary>
        ///
        [Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("网站URL"), WebDescription("请输入网站URL,格式形式如:umbrella")]
        public string WebName
        {
            get
            {
                return _webName;
            }
            set
            {
                _webName = value;
            }
        }
        private string _listName;
        /// <summary>
        /// 请输入列表名称,格式形如:已发布动态
        /// </summary>
        ///
        [Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("列表名称"), WebDescription("请输入列表名称,格式形式如:已发布动态")]
        public string ListName
        {
            get
            {
                return _listName;
            }
            set
            {
                _listName = value;
            }
        }
        public string _itemCount;
        /// <summary>
        /// 请输入要显示的条目数量,格式形如:10
        /// </summary>
        ///
        [Personalizable(PersonalizationScope.Shared), WebBrowsable(true), WebDisplayName("条目数量"), WebDescription("请输入要显示的条目数量,格式形式如:10")]
        public string ItemCount
        {
            get
            {
                return _itemCount;
            }
            set
            {
                int count = 0;
                if (int.TryParse(value, out count) && count < 100)
                    _itemCount = value;
                else
                    throw new Exception("请输入小于100的整数");
            }
        }
        public GetUsersListData()
        {
            currentUserGroup = new List<string>();
            this.ExportMode = WebPartExportMode.All;
        }
        /// <summary>
        /// 获取当前用户所在的SharePoint组
        /// </summary>
        ///
        private void GetUserSPGroup()
        {
            SPGroupCollection groups = SPContext.Current.Web.CurrentUser.Groups;
            foreach (SPGroup group in groups)
            {
                currentUserGroup.Add(group.Name);
            }
        }
        protected override void CreateChildControls()
        {
            //_gridview = new GridView();
            //_gridview.ID = "gdv_User";
            //_gridview.AutoGenerateColumns = true;
            //_gridview.DataKeyNames = new string[] {"UserID"};
            //CommandField field = new CommandField();
            //_gridview.SelectedRowStyle.BackColor = Color.CadetBlue;
            //field.ShowCancelButton = true;
            //field.ShowDeleteButton = true;
            //field.ShowEditButton = true;
            //field.ShowHeader = true;
            //field.ShowInsertButton = true;
            //field.ShowSelectButton = true;
            //_gridview.Columns.Add(field);
            //_sqldatasource = new SqlDataSource();
            //_sqldatasource.ID = "sqlDS_Users";
            //_sqldatasource.ConnectionString = "server=PHOSPHOR;database=SharePoint_Config;uid=sa;pwd=Sa123456";
            //_gridview.DataSource = _sqldatasource.ID;
            //this.Controls.Add(_sqldatasource);
            //this.Controls.Add(_gridview);

            _siteName = "http://phosphor:8080";
            _webName = "umbrella";
            _itemCount = "10";
            _listName = "联系人";
            GetUserSPGroup();
            gridView = new GridView();
            if (!string.IsNullOrEmpty(SiteName) && !string.IsNullOrEmpty(WebName) && !string.IsNullOrEmpty(ListName) && !string.IsNullOrEmpty(ItemCount))
                using (site = new SPSite(SPContext.Current.Site.ID))
                {
                    using (web = site.OpenWeb(SPContext.Current.Web.ID))
                    {
                        list = web.Lists[ListName];
                        SPQuery query = new SPQuery();
                        //query.ViewFields="<FieldRef Name='Title' />";

                        int count = 0;
                        int.TryParse(ItemCount, out count);
                        query.RowLimit = (uint)count;
                        if (IsAccessed.Equals("1"))
                        {
                            if (currentUserGroup.Count > 0)
                            {
                                query.Query = @"<OrderBy>
                                                 <FieldRef Name='ID' Ascending='False' />
                                              </OrderBy>
                                              ";
                            }
                            else
                                return;
                        }
                        else
                        {
                            query.Query = @"<OrderBy>
                                             <FieldRef Name='ID' Ascending='true' />
                                          </OrderBy>
                                          ";
                        }
                        SPListItemCollection items = web.Lists[ListName].Items;
                        string tempStr = "";

                        DataTable dt = new DataTable();
                        dt.Columns.Add(new DataColumn("姓氏", typeof(string)));
                        dt.Columns.Add(new DataColumn("名字", typeof(string)));
                        dt.Columns.Add(new DataColumn("公司", typeof(string)));
                        dt.Columns.Add(new DataColumn("商务电话", typeof(string)));
                        dt.Columns.Add(new DataColumn("住宅电话", typeof(string)));
                        dt.Columns.Add(new DataColumn("邮件地址", typeof(string)));
                        dt.Columns.Add(new DataColumn("联系人代号",typeof(int)));

                        //region 查询出类表中字段的内部名称(InternalName)
                        foreach (SPField field in list.Fields)
                        {
                            tempStr = tempStr + "/" +field.ToString()+":"+ field.InternalName.ToString();
                        }
                        //endregion

                        foreach (SPListItem item in items)
                        {
                            DataRow dr = dt.NewRow();
                            dr["姓氏"] = item.GetFormattedValue("Title");
                            dr["名字"] = item.GetFormattedValue("FirstName");
                            dr["公司"] = item.GetFormattedValue("Company");
                            dr["商务电话"] = item.GetFormattedValue("WorkPhone");
                            dr["住宅电话"] = item.GetFormattedValue("HomePhone");
                            dr["邮件地址"] = item.GetFormattedValue("Email");
                            dr["联系人代号"] = item.GetFormattedValue("_x8054__x7cfb__x4eba__x4ee3__x53");
                            dt.Rows.Add(dr);
                        }
                        //设置ID
                        gridView.ID = "gridView";
                        gridView.Columns.Clear();
                        //禁止自动生成列
                        gridView.AutoGenerateColumns = false;
                        //允许排序、分页
                        gridView.AllowSorting = true;
                        gridView.AllowPaging = true;
                        //设置一些样式
                        gridView.BackColor=Color.FromArgb(0xDE,0xBA,0x84);
                        gridView.BorderColor = Color.FromArgb(0xDE,0xBA,0x84);
                        gridView.BorderStyle = BorderStyle.None;
                        gridView.BorderWidth = new Unit("1px");
                        gridView.CellPadding = 3;
                        gridView.CellSpacing = 3;
                        gridView.DataKeyNames = new string[] { "联系人代号" };
                        //设置一些样式
                        gridView.RowStyle.BackColor = Color.FromArgb(0xFF,0xF7,0xE7);
                        gridView.RowStyle.ForeColor = Color.FromArgb(0x8C,0x45,0x10);
                        gridView.SelectedRowStyle.BackColor = Color.FromArgb(0x73,0x8A,0x9C);
                        gridView.SelectedRowStyle.Font.Bold = true;
                        gridView.SelectedRowStyle.ForeColor = Color.White;
                        gridView.PagerStyle.ForeColor = Color.FromArgb(0x8C,0x45,0x10) ;
                        gridView.PagerStyle.HorizontalAlign = HorizontalAlign.Center;
                        gridView.HeaderStyle.BackColor = Color.FromArgb(0xA5,0x51,0x29);
                        gridView.HeaderStyle.Font.Bold = true;
                        gridView.HeaderStyle.ForeColor = Color.White;
                        //添加一个编辑事件
                        gridView.RowEditing += new GridViewEditEventHandler(gridView_RowEditing);
                        //添加一个更新事件
                        gridView.RowUpdating += new GridViewUpdateEventHandler(gridView_RowUpdating);
                        //添加一个取消事件
                        gridView.RowCancelingEdit += new GridViewCancelEditEventHandler(gridView_RowCancelingEdit);
                        //添加一个命令列
                        CommandField cmdColumn = new CommandField();
                        cmdColumn.ShowDeleteButton = true;
                        cmdColumn.ShowEditButton = true;
                        cmdColumn.ShowSelectButton = true;
                        gridView.Columns.Add(cmdColumn);
                        //添加一个绑定列
                        BoundField bndColumn = new BoundField();
                        bndColumn.DataField = "姓氏";
                        bndColumn.HeaderText = "姓氏";
                        bndColumn.InsertVisible = false;
                        bndColumn.ReadOnly = true;
                        bndColumn.SortExpression = "姓氏";
                        gridView.Columns.Add(bndColumn);
                        //重新定义
                        bndColumn = new BoundField();
                        bndColumn.DataField = "名字";
                        bndColumn.HeaderText = "名字";
                        bndColumn.SortExpression = "名字";
                        gridView.Columns.Add(bndColumn);

                        //重新定义
                        bndColumn = new BoundField();
                        bndColumn.DataField = "公司";
                        bndColumn.HeaderText = "公司";
                        bndColumn.SortExpression = "公司";
                        gridView.Columns.Add(bndColumn);
                        //重新定义
                        bndColumn = new BoundField();
                        bndColumn.DataField = "商务电话";
                        bndColumn.HeaderText = "商务电话";
                        bndColumn.SortExpression = "商务电话";
                        gridView.Columns.Add(bndColumn);
                        //重新定义
                        bndColumn = new BoundField();
                        bndColumn.DataField = "住宅电话";
                        bndColumn.HeaderText = "住宅电话";
                        bndColumn.SortExpression = "住宅电话";
                        gridView.Columns.Add(bndColumn);
                        //重新定义
                        bndColumn = new BoundField();
                        bndColumn.DataField = "邮件地址";
                        bndColumn.HeaderText = "电子邮件地址";
                        bndColumn.SortExpression = "邮件地址";
                        gridView.Columns.Add(bndColumn);
                        //重新定义
                        bndColumn = new BoundField();
                        //TextField txtColumn = new TextField();
                        //txtColumn.ID = "txt_Code";
                        //txtColumn.ListId = list.ID;
                        //txtColumn.FieldName = "联系人代号";
                        //gridView.Columns.Add(txtColumn);
                        bndColumn.DataField = "联系人代号";
                        bndColumn.HeaderText = "联系人代号";
                        bndColumn.Visible = false;
                        gridView.Columns.Add(bndColumn);
                        //gridView.ShowFooter = true;
                        //gridView.ShowHeader = true;
                        //gridView.AutoGenerateDeleteButton = true;
                        //gridView.AutoGenerateEditButton = true;
                        //gridView.AutoGenerateSelectButton = true;
                        gridView.PageSize = 3;
                        gridView.PagerSettings.Mode = PagerButtons.NumericFirstLast;
                        gridView.PagerSettings.PageButtonCount = 5;
                        gridView.PagerSettings.Position = PagerPosition.Bottom;
                        gridView.PageIndexChanging += new GridViewPageEventHandler(gridView_PageIndexChanging);
                        //gridView.RowDeleting += new GridViewDeleteEventHandler(gridView_RowDeleting);
                        //gridView.RowCreated += new GridViewRowEventHandler(gridView_RowCreated);
                       
                        _gvtable = dt;
                        //gridView.DataSource = dt;
                        //gridView.DataBind();
                        //DataBind(GVTable);
                    }
                }
            Controls.Add(gridView);
            DataBind(GVTable);
            base.CreateChildControls();
        }
        void gridView_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            gridView.EditIndex = -1;
            DataBind(GVTable);
        }
        void gridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            int index = e.RowIndex;
            //string code=gridView.Rows[index]
            SPQuery query = new SPQuery();
            query.Query= @"<Where></Where>";
        }
        //void gridView_RowCreated(object sender, GridViewRowEventArgs e)
        //{
        //    throw new Exception("The method or operation is not implemented.");
        //}

        void gridView_RowEditing(object sender, GridViewEditEventArgs e)
        {
            gridView.EditIndex = e.NewEditIndex;
            DataBind(GVTable);
        }
        //void gridView_RowDeleting(object sender, GridViewDeleteEventArgs e)
        //{
        //    throw new Exception("The method or operation is not implemented.");
        //}

        private void DataBind(DataTable dt )
        {
            try
            {
                this.gridView.DataSource = dt;
                this.gridView.DataBind();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.ToString());
            }
        }
        void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gridView.PageIndex = e.NewPageIndex;
            //gridView.DataSource = GVTable;
            //gridView.DataBind();
            this.DataBind(GVTable);
        }
        protected override void Render(HtmlTextWriter writer)
        {
            // TODO: add custom rendering code here.
            // writer.Write("Output HTML");
            EnsureChildControls();
            base.Render(writer);
        }
    }
}
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-119586-1-1.html 上篇帖子: SharePoint 2013 APP 开发示例 (六)服务端跨域访问 Web Service (REST API) 下篇帖子: SharePoint 2010 自定义Ribbon实现文档批量下载为Zip文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表