• SharePoint list Search


    using System;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using Microsoft.SharePoint;
    using ASPWebPart = System.Web.UI.WebControls.WebParts;
    using System.Xml;
    using Microsoft.SharePoint.WebPartPages;
    namespace Train.StudentQuery
    {
        public partial class StudentQueryUserControl : UserControl
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!this.Page.IsPostBack)
                {
                    SPSecurity.RunWithElevatedPrivileges(delegate()
                    {
                        using (SPSite site = new SPSite(@"http://lwj:7004"))
                        {
                            using (SPWeb web = site.OpenWeb())
                            {
                                SPList list = web.Lists["班级信息"];
                                SPListItemCollection items = list.Items;
                                ddlClass.Items.Add(new ListItem("所有班级", ""));
                                foreach (SPListItem item in items)
                                {
                                    string className = item["班级名称"] == null ? "" : item["班级名称"].ToString();
                                    ddlClass.Items.Add(new ListItem(className, className));
                                }
                            }
                        }
                    }); 
                }
            }

            protected void btnQuery_Click(object sender, EventArgs e)
            {
                string query = getQuery();
                execQuery(query);
            }
            protected void btnReset_Click(object sender, EventArgs e)
            {
                txtName.Text = "";
                for (int i = 0; i < ddlClass.Items.Count; i++)
                {
                    ddlClass.Items[i].Selected = false;
                }
                ddlClass.Items[0].Selected = true;
                for (int i = 0; i < ddlSex.Items.Count; i++)
                {
                    ddlSex.Items[i].Selected = false;
                }
                ddlSex.Items[0].Selected = true;
                string query = getQuery();
                execQuery(query);

            }
            /// <summary>
            /// 获取查询字符串
            /// </summary>
            /// <returns></returns>
            string getQuery()
            {

                string query = "";
                string addCaml = "";
                SPList list = SPContext.Current.Web.Lists["学员信息表"];
                if (this.txtName.Text != "")
                {
                    addCaml = @"<Where>
                                  <Contains>
                                     <FieldRef Name='" + list.Fields["姓名"].InternalName + @"' />
                                     <Value Type='Text'>" + txtName.Text + @"</Value>
                                  </Contains>
                               </Where>";
                    query = createCaml("And", query, addCaml);
                }
                if (this.ddlSex.SelectedItem.Value != "")
                {
                    addCaml = @"<Where>
                                  <Eq>
                                     <FieldRef Name='" + list.Fields["性别"].InternalName + @"' />
                                     <Value Type='Text'>" + this.ddlSex.SelectedItem.Value + @"</Value>
                                  </Eq>
                               </Where>";
                    query = createCaml("And", query, addCaml);
                }

                if (this.ddlClass.SelectedItem.Value != "")
                {
                    addCaml = @"<Where>
                                  <Eq>
                                     <FieldRef Name='" + list.Fields["所在班级"].InternalName + @"' />
                                     <Value Type='Text'>" + this.ddlClass.SelectedItem.Value + @"</Value>
                                  </Eq>
                               </Where>";
                    query = createCaml("And", query, addCaml);
                }
               //Response.Write("<script>alert('"+query+"')</script>");
                return query;
            }
            string createCaml(string logicType, string caml, string addCaml)
            {

                string returnCaml = "";
                if (caml == "")
                {
                    XmlDocument meXml = new XmlDocument();
                    meXml.LoadXml(addCaml);
                    XmlNode mewhere = meXml.SelectSingleNode("Where");

                    returnCaml = "<Where>"
                               + mewhere.InnerXml
                              + "</Where>";
                }
                else
                {

                    XmlDocument docXml = new XmlDocument();
                    docXml.LoadXml(caml);
                    XmlNode where = docXml.SelectSingleNode("Where");
                    XmlDocument meXml = new XmlDocument();

                    meXml.LoadXml(addCaml);
                    XmlNode mewhere = meXml.SelectSingleNode("Where");

                    returnCaml = "<Where><" + logicType + ">" +
                               where.InnerXml +
                               mewhere.InnerXml +
                              "</" + logicType + "></Where>";
                }
                return returnCaml;


            }
            void execQuery(string query)
            {

                ASPWebPart.WebPartCollection webParts = ASPWebPart.WebPartManager.GetCurrentWebPartManager(this.Page).WebParts;
                foreach (ASPWebPart.WebPart wp in webParts)
                {
                    if (wp is XsltListViewWebPart)
                    {
                        XsltListViewWebPart xsltListViewWebPart = wp as XsltListViewWebPart;
                        if (xsltListViewWebPart != null)
                        {
                            string XmlDefinition = xsltListViewWebPart.XmlDefinition;
                            XmlDocument xmldoc = new XmlDocument();
                            xmldoc.LoadXml(XmlDefinition);
                            XmlNode ViewNode = xmldoc.SelectSingleNode("View");
                            ((XmlElement)ViewNode).SetAttribute("Scope", "Recursive");

                            XmlNode queryNode = xmldoc.SelectSingleNode("View/Query");
                            queryNode.InnerXml = query + queryNode.InnerXml;
                            XmlNode AggregationsNode = xmldoc.SelectSingleNode("View/Aggregations");
                            if (AggregationsNode == null)
                            {
                                XmlNode newAggregationsNode = xmldoc.CreateElement("Aggregations");
                                ((XmlElement)newAggregationsNode).SetAttribute("Value", "Off");
                                ViewNode.AppendChild(newAggregationsNode);
                            }
                            else
                            {
                                ((XmlElement)AggregationsNode).SetAttribute("Value", "Off");
                            }
                            //XmlNode ToolbarNode = xmldoc.SelectSingleNode("View/Toolbar");
                            //((XmlElement)AggregationsNode).SetAttribute("Type", "Freeform");
                            xsltListViewWebPart.XmlDefinition = xmldoc.OuterXml;
                            xsltListViewWebPart.AsyncRefresh = true;


                        }
                    }
                }
            }
        }
    }

  • 相关阅读:
    组播技术
    高阶函数
    《统计学习方法》第一章学习笔记
    R代码规范(转)
    数据挖掘与商业智慧:华通二十年专题----台湾辅仁大学谢邦昌教授访谈(转载)
    基于Hadoop的机器学习开源项目
    特征选择算法之开方检验(转载)
    朴素贝叶斯算法及不同特征值结果的比较
    走出数据挖掘的误区(转载)
    互联网时代的社会语言学:基于SNS的文本数据挖掘(转载)
  • 原文地址:https://www.cnblogs.com/Fengger/p/2490431.html
Copyright © 2020-2023  润新知