zoukankan      html  css  js  c++  java
  • 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;


                        }
                    }
                }
            }
        }
    }

  • 相关阅读:
    HDU 6191 Query on A Tree ( 2017广西邀请赛 && 可持久化Trie )
    BZOJ 4318 OSU! ( 期望DP )
    洛谷 P2473 [SCOI2008]奖励关 ( 期望DP )
    Codeforces #499 E Border ( 裴蜀定理 )
    HDU 6444 Neko's loop ( 2018 CCPC 网络赛 && 裴蜀定理 && 线段树 )
    HDU 6438 Buy and Resell ( 2018 CCPC 网络赛 && 贪心 )
    Nowcoder Hash Function ( 拓扑排序 && 线段树优化建图 )
    Nowcoder Playing Games ( FWT 优化 DP && 博弈论 && 线性基)
    js中的深拷贝与浅拷贝
    nrm 源管理器
  • 原文地址:https://www.cnblogs.com/Fengger/p/2490431.html
Copyright © 2011-2022 走看看