• ListViewWebPart Code


    //----------------------------------------------------------------
    //
    //
    //文件描述:
    //
    //创 建 人: jianyi0115@163.com
    //创建日期: 2007-11-29
    //
    //修订记录:
    //
    //----------------------------------------------------------------

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Collections.Specialized;
    using System.ComponentModel;
    using System.Text;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Reflection;
    using System.Xml;
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.WebControls;
    //using Microsoft.SharePoint.Publishing;
    using System.Reflection;
    using CodeA.SharePoint.WebPartSkin;
    using CodeA.SharePoint.EditParts;

    namespace CodeA.SharePoint
    {

        class ExtandViewToolBar : ViewToolBar
        {
            protected override void CreateChildControls()
            {
                base.CreateChildControls();

                ToolBar toolbarControl = (ToolBar)this.TemplateContainer.FindControl("toolBarTbl");
                if (toolbarControl != null)
                {

                }
            }

            public ToolBar InnerToolBar
            {
                get
                {
                    this.EnsureChildControls();

                    ToolBar toolbarControl = (ToolBar)this.TemplateContainer.FindControl("toolBarTbl");

                    return toolbarControl;
                }
            }
        }

         /// <summary>
        /// 具有skin加载能力的webpart基类
        /// </summary>
        ///
        //[Designer(typeof(SkinWebPartDesigner))]
        public class ListViewWebPart : BaseSPListWebPart
        {

            private IQueryConditionProvider _QueryConditionProvider;

            [ResConnectionConsumer("QueryCondition", "QueryConditionConsumer",
               AllowsMultipleConnections = true)]
            public void ConsumeQueryCondition(IQueryConditionProvider provider)
            {
                _QueryConditionProvider = provider;

                SetQuery();
            }


            private bool _ShowToolbar = false ;
            [Personalizable(PersonalizationScope.Shared)]
            [WebBrowsable]
            [ResWebDisplayName("ListViewWebPart_ShowToolbar")]
            public bool ShowToolbar
            {
                get { return _ShowToolbar; }
                set { _ShowToolbar = value; }
            }

            private string _ToolbarTemplateName;
            [Personalizable(PersonalizationScope.Shared)]
            [WebBrowsable]
            [WebDisplayName("工具栏模板")]
            public virtual string ToolbarTemplateName
            {
                get { return _ToolbarTemplateName; }
                set { _ToolbarTemplateName = value; }
            }

            private int _RowLimit = 0;
            /// <summary>
            /// 最多显示行数
            /// </summary>
            ///
            [Personalizable(PersonalizationScope.Shared)]
            [WebBrowsable]
            [ResWebDisplayName("ListViewWebPart_RowLimit")]
            public int RowLimit
            {
                set { _RowLimit = value; }
                get { return _RowLimit; }
            }

            private bool _ShowViewList = false ;
            [Personalizable(PersonalizationScope.Shared)]
            [WebBrowsable]
            [ResWebDisplayName("ListViewWebPart_ShowViewList","显示视图列表")]
            public  virtual bool ShowViewList
            {
                get { return _ShowViewList; }
                set { _ShowViewList = value; }
            }

            /// <summary>
            /// 是否使用已经存在的视图,而不是新建单独的视图
            /// </summary>
            private bool _UseExistView = true;
            [Personalizable(PersonalizationScope.Shared)]
            [WebBrowsable(false)]
            public bool UseExistView
            {
                get {  return _UseExistView; }
                set { _UseExistView = value; }
            }

            private Guid _RelationViewID;
            /// <summary>
            /// 关联的视图--有本控件创建
            /// </summary>
            [Personalizable(PersonalizationScope.Shared)]
            [WebBrowsable(false)]
            public Guid RelationViewID
            {
                get { return _RelationViewID; }
                set { _RelationViewID = value; }
            }

            private string _RootFolder;
            [Personalizable(PersonalizationScope.Shared)]
            [WebBrowsable(true)]
            public string RootFolder
            {
                get { return _RootFolder; }
                set { _RootFolder = value; }
            }

            // private bool _AutoGenerateEmptyRows = true;
            /// <summary>
            /// 当实际行数不足时(行数小于MaxRowCount),是否自动生成空行
            /// </summary>
            ///
            //[Localizable(true)]
            //[Personalizable(PersonalizationScope.Shared)]
            //[WebBrowsable]
            //[ResWebDisplayName("ListViewWebPart_AutoGenerateEmptyRows")]
            //public bool AutoGenerateEmptyRows
            //{
            //    set { _AutoGenerateEmptyRows = value; }
            //    get { return _AutoGenerateEmptyRows; }
            //}       

            protected string GetBodySkinKey()
            {
                return this.TemplateID + "_body";
            }              

            private ViewToolBar _toolbar;
            public ViewToolBar ToolbarControl
            {
                get
                {
                    if (this._toolbar != null)
                    {
                        return this._toolbar;
                    }

                    SPList list = this.GetCurrentSPList();

                    if (list == null) return null;                    

                     SPView view = this.CurrentView;

                     if (view == null) return null;
                   
                    //SPWeb web = this.GetCurrentSPWeb();
                    //(HttpContext context, Guid viewId, Guid listId, SPWeb web);
                    SPContext context = SPContext.GetContext( base.Context , view.ID , list.ID , list.ParentWeb )  ;
                    //context.ViewContext.View = view;
                    //context.ViewContext.ViewType = this.ViewType;
                    //context.ViewContext.Qualifier = base.Qualifier;

                    this._toolbar = new ExtandViewToolBar();
                    this._toolbar.ID = this.ID + "_ExtandViewToolBar1";
                    this._toolbar.RenderContext = context;
                    this._toolbar.EnableViewState = false;

                    if (!String.IsNullOrEmpty(ToolbarTemplateName))
                    {
                        this._toolbar.TemplateName = this.ToolbarTemplateName;
                    }
                    else if (!String.IsNullOrEmpty(view.ToolbarTemplateName))
                    {
                        this._toolbar.TemplateName = view.ToolbarTemplateName;
                    }
                        
                    return this._toolbar;
                }
            }         
     

            void HiddenToolbar(XmlDocument doc)
            {
                XmlNode toolNode = doc.DocumentElement.SelectSingleNode("Toolbar");

                 if (toolNode != null)
                    doc.DocumentElement.RemoveChild(toolNode);
            }
           
            void ProcessToolbarSchema(XmlDocument doc )
            {
                XmlNode toolNode = doc.DocumentElement.SelectSingleNode("Toolbar");

                if (this.ShowToolbar)
                {
                    if (toolNode == null)
                    {
                        toolNode = doc.CreateElement("Toolbar");
                        XmlAttribute att = doc.CreateAttribute("Type");
                        att.Value = "Standard";
                        toolNode.Attributes.Append(att);
                        doc.DocumentElement.AppendChild(toolNode);
                    }
                    else
                    {
                        toolNode.InnerXml = "";
                        toolNode.Attributes["Type"].Value = "Standard" ;
                    }
                }
                else
                {
                    if (toolNode != null)
                        doc.DocumentElement.RemoveChild(toolNode);
                }
            }

            protected Microsoft.SharePoint.WebPartPages.ListViewWebPart ContentList = null ;
            protected LiteralControl ContentHtml;

            protected override void OnLoad(EventArgs e)
            {
                base.OnLoad(e);

                this.EnsureChildControls();
            }

            private XmlDocument _ListViewXml;
            void SetQuery()
            {
                this.EnsureChildControls();
                if (ContentList != null)
                {
                    //ProcessToolbarSchema(doc);

                    if (this._QueryConditionProvider != null && !String.IsNullOrEmpty(this._QueryConditionProvider.QueryCondition.Query))
                    {
                        SPUtil.ChangeSchemaXmlQuery(_ListViewXml, this._QueryConditionProvider.QueryCondition.Query);
                    }

                    ContentList.ListViewXml = _ListViewXml.InnerXml ;
                }
            }

            public void ReCreateChildControls()
            {
                CreateChildControls();
            }

            /// <summary>
            /// 内容控件是否被创建
            /// </summary>
            public bool ContentCreated = false;

            protected override void CreateChildControls()
            {
                //if (this.ChildControlsCreated) return;       

                this.Controls.Clear();

                base.CreateChildControls();           

                if (List == null)
                {
                    base.RegisterShowToolPanelControl("请", "打开工具窗格", ",设置“列表名称”。");
                    return;
                }

                bool htmlCreated = CreateContentHtml(true);

                if (!htmlCreated)
                    CreateContentList(true);
            }

            protected virtual bool CreateContentHtml( bool createToolbar )
            {
                if (!String.IsNullOrEmpty(this.TemplateID)) //指定皮肤
                {            
                    SkinElement el = GetSkin();

                    if (el != null && !String.IsNullOrEmpty(el.Body))
                    {
                        if ( createToolbar && this.ShowToolbar && this.ToolbarControl != null)
                        {
                            this.Controls.Add(this.ToolbarControl);
                        }

                        ContentHtml = new LiteralControl();
                        ContentHtml.ID = this.ID + "_ContentHtml";
                        ContentHtml.Text = this.GetContentHtml(el.Body);

                        this.Controls.Add(ContentHtml);
                        this.ContentCreated = true;

                        return true;
                    }
                }

                return false;
            }


            protected virtual void CreateContentList(bool createToolbar)
            {
                SPView view = this.CurrentView;

                if (view == null) return;

                //if (!String.IsNullOrEmpty(ToolbarTemplateName))
                //{
                //    view.ToolbarTemplateName = this.ToolbarTemplateName;
                //}

                ContentList = new Microsoft.SharePoint.WebPartPages.ListViewWebPart();
                ContentList.ID = this.ID + "ContentList";
                ContentList.Title = this.Title;
                ContentList.ListName = List.ID.ToString("B").ToUpper();

                if ( ShowViewList && createToolbar )
                    ContentList.ViewGuid = view.ID.ToString("B").ToUpper();
                //给ViewGuid赋值时,会显示出视图选择菜单

                _ListViewXml = new XmlDocument();
                _ListViewXml.LoadXml(view.HtmlSchemaXml);

                if (this.ShowToolbar == false || createToolbar == false)
                    this.HiddenToolbar(_ListViewXml);

                ContentList.ListViewXml = _ListViewXml.InnerXml;

                ContentList.EnableViewState = true;

                //ContentList.FrameType = Microsoft.SharePoint.WebPartPages.FrameType.None;

                ContentList.ChromeType = PartChromeType.None; //不显示标题

                if (!String.IsNullOrEmpty(ToolbarTemplateName))
                {
                    foreach (Control ctl in ContentList.Controls)
                    {
                        if (ctl is ViewToolBar)
                        {
                            ViewToolBar bar = (ViewToolBar)ctl;
                            bar.TemplateName = this.ToolbarTemplateName;
                            //bar.AlternateTemplateName = this.ToolbarTemplateName;
                            break;
                        }
                    }
                }


                this.Controls.Add(ContentList);

                this.ContentCreated = true;
            }


            protected virtual void RenderToolbar(HtmlTextWriter writer)
            {
                if (this.ShowToolbar && this.ToolbarControl != null)
                    this.ToolbarControl.RenderControl(writer);
            }       
                  
            private string GetContentHtml(string skin)
            {
                StringBuilder html = new StringBuilder();

                try
                {
                    SPList list = base.GetCurrentSPList();

                    if (list == null)
                    {
                        return "";
                    }

                    string skinKey = GetBodySkinKey();

                    SPListItemCollection items = null;                

                    SPView view = base.CurrentView ;

                    SPQuery q = new SPQuery(view);

                    if (this._QueryConditionProvider != null)
                    {
                        q.Query = this._QueryConditionProvider.QueryCondition.Query;
                    }

                    if (RowLimit > 0)
                        q.RowLimit = (uint)this.RowLimit;

                    q.ViewFields = "";

                    if (!String.IsNullOrEmpty(_RootFolder))
                    {
                        SPFolder folder = base.Web.GetFolder(_RootFolder);
                        if (folder != null)
                            q.Folder = folder;
                    }
                    else
                    {

                        string rootFolder = Page.Request.QueryString["RootFolder"];

                        if (rootFolder != null && rootFolder != "")
                        {
                            SPFolder folder = base.Web.GetFolder(rootFolder);
                            if (folder != null)
                                q.Folder = folder;
                        }

                    }

                    items = list.GetItems(q);

                    int rowNumber = 0;

                    IList<ReplaceTag> tags = ReplaceTagManager.GetInstance().GetReplaceTags(skinKey, skin);

                    ITagValueProvider listValueProvider = new SPListValueProvider(list);
                    ITagValueProvider wpValueProvider = new WebPartValueProvider(this);

                    foreach (SPListItem item in items)
                    {
                        StringBuilder sb = new StringBuilder(skin);

                        rowNumber++;

                        string v;

                        ITagValueProvider fieldValueProvider = new SPListItemValueProvider(item, rowNumber);

                        foreach (ReplaceTag tag in tags)
                        {
                            if (tag.ValueProvider == "spfield")
                                sb.Replace(tag.TagValue, fieldValueProvider.GetValue(tag));
                            else if (tag.ValueProvider == "splist")
                                sb.Replace(tag.TagValue, listValueProvider.GetValue(tag));
                            else if (tag.ValueProvider == "webpart")
                                sb.Replace(tag.TagValue, wpValueProvider.GetValue(tag));
                        }

                        html.Append(sb.ToString());
                    }

                    return html.ToString();
                }
                catch (Exception ex)
                {
                    base.RegisterError(ex);

                    return "" ;
                }
            }

            public override EditorPartCollection CreateEditorParts()
            {
                ArrayList editorArray = new ArrayList();

                ViewEditorPart edPart = new ViewEditorPart();
                edPart.ID = "ViewEditorPart1";
                editorArray.Add(edPart); 

                EditorPartCollection initEditorParts = base.CreateEditorParts();

                EditorPartCollection editorParts = new EditorPartCollection(initEditorParts, editorArray);

                return editorParts;
            }

        }
    }

  • 相关阅读:
    Springboot中使用Scala开发
    aliyun阿里云Maven仓库地址
    css文字滚动
    随笔
    下拉菜单事件
    微信分享
    微信分享功能
    随笔记
    全屏设置
    判定复选框的选中状态
  • 原文地址:https://www.cnblogs.com/jianyi0115/p/1130665.html
Copyright © 2020-2023  润新知