技术开发 频道

列表查询WebPart


【IT168技术文档】

  SmartListSearchWebPart
  简单列表查询WebPart.本代码只是一个简单的Demo,代码没有实际的价值,但是很有学习价值.
  在项目中可以得到很好的应用!
using System; using System.Runtime.InteropServices; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Serialization; using System.Xml; using Microsoft.SharePoint; using Microsoft.SharePoint.WebControls; using Microsoft.SharePoint.WebPartPages; namespace SmartListSearchWebPart { [Guid("34903418-36da-45cb-ae81-27cd82b628dd")] public class SmartListSearchWebPart : System.Web.UI.WebControls.WebParts.WebPart { public SmartListSearchWebPart() { this.ExportMode = WebPartExportMode.All; } private Button btnSearch; private TextBox tbKey; /// <summary> /// create child controls /// </summary> protected override void CreateChildControls() { btnSearch = new Button(); btnSearch.Text = "查询"; btnSearch.Click += new EventHandler(btnSearch_Click); this.Controls.Add(btnSearch); tbKey = new TextBox(); this.Controls.Add(tbKey); base.CreateChildControls(); } private SPList List { get { return SPContext.Current.List; } } /// <summary> /// search /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void btnSearch_Click(object sender, EventArgs e) { if (this.tbKey.Text != "") { string cmal = string.Format("<Where><Contains><FieldRef Name='Title' /><Value Type='Text'>{0}</Value></Contains></Where>", this.tbKey.Text.ToString()); this.SetCurrentListViewSchemaQuery(cmal); } } /// <summary> /// set current list view schema query /// </summary> /// <param name="cmal"></param> private void SetCurrentListViewSchemaQuery(string cmal) { if (!string.IsNullOrEmpty(cmal)) { string str = "{" +this.List.ID.ToString() +"}"; foreach (System.Web.UI.WebControls.WebParts.WebPart webPart in base.Zone.WebParts) { if (webPart is ListViewWebPart) { ListViewWebPart listViewWebPart = (ListViewWebPart)webPart; if (string.Compare(listViewWebPart.ListName, str, true) != 0) { continue; } if (string.IsNullOrEmpty(cmal)) { listViewWebPart.ListViewXml = this.List.Views[new Guid(listViewWebPart.ViewGuid)].HtmlSchemaXml; } else { XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(listViewWebPart.ListViewXml); this.ChangeSchemaXmlCaml(xmlDocument, cmal); listViewWebPart.ListViewXml = xmlDocument.InnerXml; } } } } } /// <summary> /// move where /// </summary> /// <param name="q"></param> /// <returns></returns> private string GetInnerQuery(string q) { XmlDocument docuemnt = new XmlDocument(); docuemnt.LoadXml(q); return docuemnt.DocumentElement.InnerXml; } /// <summary> /// change schema xml query /// </summary> /// <param name="xmlDocument"></param> /// <param name="query"></param> private void ChangeSchemaXmlCaml(XmlDocument xmlDocument,string query) { if (!string.IsNullOrEmpty(query)) { string innerXml = this.GetInnerQuery(query); if (innerXml != "") { XmlNode node = xmlDocument.DocumentElement.SelectSingleNode("Query"); XmlNode oldChild = node.SelectSingleNode("Where"); if (oldChild != null) { node.RemoveChild(oldChild); } XmlNode newChild = xmlDocument.CreateElement("Where"); newChild.InnerXml = innerXml; node.AppendChild(newChild); xmlDocument.DocumentElement.SelectSingleNode("ViewEmpty").InnerXml = "<HTML><![CDATA[<font color='red'><b>AA Say:未找到符合查询条件的记录。</b></font>]]></HTML>"; } } } /// <summary> /// render /// </summary> /// <param name="writer"></param> protected override void Render(HtmlTextWriter writer) { writer.Write("<table><tr><td>"); writer.Write("关键字:"); tbKey.RenderControl(writer); btnSearch.RenderControl(writer); writer.Write("</td></tr></table>"); } } }
0
相关文章