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

[经验分享] WSS[sharepoint]中如何建立一个搜索的功能的webpart[Search]

[复制链接]

尚未签到

发表于 2015-9-26 11:18:02 | 显示全部楼层 |阅读模式
  with Windows sharepoint service, how to build a webpart to support search one list of a web site.

这个webpart的使用必须让MSSQL支持全文索引才行。
在sql客户端运行
sp_fulltext_database 'enable'

使用时要小心。如果已经存在全文目录,那么该过程将除去所有的全文目录,重新创建系统表中指明的任何全文索引,并且将数据库标记为已全文启用。

这个webpart例子是显示一个站点所有的list,并把每个list的field显示出来,同时根据输入查询的字符串来查询这个list的记录。
[如何创建webpart和如何加入webpart到wss中去这里就不介绍了。]
下面给完整代码



DSC0000.gif DSC0001.gif /**//*written by King_astar on 2005.5.14
DSC0002.gif * test search object in wws
DSC0003.gif */
DSC0004.gif
using System;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml.Serialization;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.WebPartPages;
using Microsoft.SharePoint.WebControls;

using System.Data;

namespace TestWebPartSearch
DSC0005.gif {
DSC0006.gif DSC0007.gif     /**//// <summary>
    /// Description for WebPart1.
DSC0008.gif     /// </summary>
    [DefaultProperty("Text"),
        ToolboxData("<{0}:MySearchPart runat=server></{0}:MySearchPart>"),
        XmlRoot(Namespace="TestWebPartSearch")]
    public class MySearchPart : Microsoft.SharePoint.WebPartPages.WebPart
    {
        private const string defaultText = "";
        private String _searchStr ="";
        private DataGrid mydatagrid ;
        private Button serarchBtn;
        private DropDownList selectdrp;
        private DropDownList fielddrp;

        private TextBox searchTxt;
        private String _searchColumn ="title";
        private SPSite _spsite;
        private SPWeb _spweb;


        private string text = defaultText;

        properties#region properties
        [Browsable(true),
            Category("Miscellaneous"),
            DefaultValue(defaultText),
            WebPartStorage(Storage.Personal),
            FriendlyName("List Item"),
            Description("Text Property")]
        public string Text
        {
            get
            {
                return text;
            }

            set
            {
                text = value;
            }
        }

   
        #endregion

        constructor#region constructor
        public MySearchPart()
        {
            _spsite =  new SPSite("http://172.16.1.212/");
            this._spweb =   _spsite.OpenWeb();
            SPListCollection splists = _spweb.Lists;
            serarchBtn = new Button();
            selectdrp = new DropDownList();
            searchTxt = new TextBox();
            fielddrp = new DropDownList();
            mydatagrid = new DataGrid();
            this.Controls.Add(new LiteralControl("Pls Select List:"));
            this.Controls.Add(selectdrp);
            this.Controls.Add(new LiteralControl("<br/>"));
            this.Controls.Add(fielddrp);
            this.Controls.Add(searchTxt);
            this.Controls.Add(serarchBtn);
            this.Controls.Add(mydatagrid);

            serarchBtn.Text = " search Now";
            serarchBtn.Click +=new EventHandler(serarchBtn_Click);
            for(int i=0;i<splists.Count;i++)
            {
                ListItem one = new ListItem();
                one.Value = splists.Title;
                one.Text  =  splists.Title;
                selectdrp.Items.Add(one);

            }
            selectdrp.AutoPostBack = true;
            selectdrp.SelectedIndexChanged +=new EventHandler(selectdrp_SelectedIndexChanged);
            


            

        }
        #endregion
        
        /**//// <summary>
        ///    This method gets the custom tool parts for this Web Part by overriding the
        ///    GetToolParts method of the WebPart base class. You must implement
        ///    custom tool parts in a separate class that derives from
        ///    Microsoft.SharePoint.WebPartPages.ToolPart.
        ///    </summary>
        ///<returns>An array of references to ToolPart objects.</returns>
//        public override ToolPart[] GetToolParts()
//        {
//            ToolPart[] toolparts = new ToolPart[2];
//            WebPartToolPart wptp = new WebPartToolPart();
//            CustomPropertyToolPart custom = new CustomPropertyToolPart();
//            toolparts[0] = wptp;
//            toolparts[1] = custom;
//            return toolparts;
//        }
        
        /**//// <summary>
        /// Render this Web Part to the output parameter specified.
        /// </summary>
        /// <param name="output"> The HTML writer to write out to </param>
//        protected override void RenderWebPart(HtmlTextWriter output)
//        {
//            
//
//
//            output.Write(SPEncode.HtmlEncode(Text));
//        }

        protected override void CreateChildControls()
        {
            base.CreateChildControls ();
        }

        private void serarchBtn_Click(object sender, EventArgs e)
        {
            
            
            String temp = fielddrp.SelectedValue;
            string typeStr = "";
            this._searchColumn = temp.Split(',')[0];
            typeStr =  temp.Split(',')[1];
            this._searchStr = searchTxt.Text.Trim();
            //searchTxt.Text = temp;



            SPList splist = _spweb.Lists[selectdrp.SelectedIndex];
            SPQuery spquery = new SPQuery();
            spquery.Query = "<Where><Eq><FieldRef Name=\""+_searchColumn+"\"/>"+ "<Value Type=\""+typeStr+"\">"+_searchStr+"</Value></Eq></Where>";
            SPListItemCollection splistitems;
            splistitems = splist.GetItems(spquery);
            DataTable dt = new  DataTable();
            dt.Columns.Add(new DataColumn("ID",typeof(String)));
            dt.Columns.Add(new DataColumn("XML",typeof(String)));

            for(int i =0;i<splistitems.Count;i++)
            {
                DataRow row = dt.NewRow();
                row["ID"]        = splistitems.ID;
                row["XML"]  = this.Page.Server.HtmlEncode(splistitems.Xml);
                dt.Rows.Add(row);
            }
            

            
            mydatagrid.DataSource = dt;
            mydatagrid.DataBind();




        }

        private void selectdrp_SelectedIndexChanged(object sender, EventArgs e)
        {
            SPList splist = _spweb.Lists[selectdrp.SelectedIndex];
            SPFieldCollection spfields = splist.Fields;
            for(int i=0;i<spfields.Count;i++)
            {
                ListItem one = new ListItem();
                one.Value = spfields.InternalName+","+ spfields.TypeAsString;
                one.Text  = spfields.Title;
                fielddrp.Items.Add(one);

            }

        }
    }
}
  
  

运维网声明 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-119028-1-1.html 上篇帖子: Sharepoint常见概念 下篇帖子: Publishing and Synchronizing Excel 2007 Tables to SharePoint Lists (From MSDN)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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