1: #region using statements
2: using System;
3: using System.Runtime.InteropServices;
4: using System.Web;
5: using System.Web.UI;
6: using System.Web.UI.WebControls;
7: using System.Web.UI.WebControls.WebParts;
8: using System.Xml.Serialization;
9: using System.Text;
10:
11:
12: using Microsoft.SharePoint;
13: using Microsoft.SharePoint.WebControls;
14: using Microsoft.SharePoint.WebPartPages;
15: #endregion
16:
17: namespace Foo
18: {
19: [Guid("9558189B-CD3B-481b-9B06-AE434CF47B18")]
20: public class CrossSiteCollectionListViewWebPart : System.Web.UI.WebControls.WebParts.WebPart
21: {
22: #region protected child control variable definitions
23: protected ListViewByQuery viewByQuery = null;
24: protected EncodedLiteral encodedLiteral = null;
25: #endregion
26:
27: #region webpart properties
28: /// <summary>
29: ///
30: /// </summary>
31: private string viewNameField = string.Empty;
32: [Personalizable(), WebPartStorage(Storage.Shared), WebBrowsable(),
33: WebDisplayName("View Name"), WebDescription("View Name")]
34: public string ViewName
35: {
36: get
37: {
38: return this.viewNameField;
39: }
40: set
41: {
42: this.viewNameField = value;
43: }
44: }
45: private string siteUrlField = string.Empty;
46: [Personalizable(), WebPartStorage(Storage.Shared), WebBrowsable(),
47: WebDisplayName("Site Url"), WebDescription("Site Url")]
48: public string SiteUrl
49: {
50: get
51: {
52: return this.siteUrlField;
53: }
54: set
55: {
56: this.siteUrlField = value;
57: }
58: }
59: /// <summary>
60: ///
61: /// </summary>
62: private string sourceListField = string.Empty;
63: [Personalizable(), WebPartStorage(Storage.Shared), WebBrowsable(),
64: WebDisplayName("Source List"), WebDescription("Source list to query")]
65: public string SourceList
66: {
67: get
68: {
69: return this.sourceListField;
70: }
71: set
72: {
73: this.sourceListField = value;
74: }
75: }
76: private Boolean disableFilterField = false;
77: [Personalizable(), WebPartStorage(Storage.Shared), WebBrowsable(),
78: WebDisplayName("Disable Filter"), WebDescription("Disable List Filtering")]
79: public Boolean DisableFilter
80: {
81: get
82: {
83: return disableFilterField;
84: }
85: set
86: {
87: disableFilterField = value;
88: }
89: }
90: private Boolean disableSortField = false;
91: [Personalizable(), WebPartStorage(Storage.Shared), WebBrowsable(),
92: WebDisplayName("Disable Sort"), WebDescription("Disable list sorting")]
93: public Boolean DisableSort
94: {
95: get
96: {
97: return disableSortField;
98: }
99: set
100: {
101: this.disableSortField = value;
102: }
103: }
104: #endregion
105:
106: #region overrides
107: protected override void CreateChildControls()
108: {
109: base.CreateChildControls();
110: SPSite site = null ;
111: SPWeb web = null ;
112: Boolean disposeSPSite = false ;
113: try
114: {
115: if (this.SourceList != string.Empty && this.SourceList != string.Empty)
116: {
117: viewByQuery = new ListViewByQuery();
118: if(this.SiteUrl != null && this.SiteUrl != string.Empty)
119: {
120: site = new SPSite(this.SiteUrl);
121: disposeSPSite = true ;
122: }
123: else
124: {
125: site = SPContext.Current.Site ;
126: }
127: web = site.OpenWeb();
128: SPList sourceList = web.Lists[this.SourceList];
129: viewByQuery.List = sourceList;
130: SPQuery query = null;
131: if (CheckIfViewExists(viewByQuery.List))
132: {
133: //use the view specified in webpart property
134: query = new SPQuery(viewByQuery.List.Views[this.ViewName]);
135: }
136: else
137: {
138: //use default view to initialized
139: query = new SPQuery(viewByQuery.List.DefaultView);
140: }
141: viewByQuery.Query = query;
142: viewByQuery.DisableFilter = this.DisableFilter;
143: viewByQuery.DisableSort = this.DisableSort;
144: this.Controls.Add(viewByQuery);
145: }
146: else
147: {
148: encodedLiteral = new EncodedLiteral();
149: encodedLiteral.Text = "This webpart is not configured.";
150: this.Controls.Add(encodedLiteral);
151: }
152: }
153: finally
154: {
155: if(disposeSPSite)
156: {
157: ((IDisposable)site).Dispose();
158: ((IDisposable)web).Dispose();
159: }
160: }
161: }
162: protected override void RenderContents(HtmlTextWriter writer)
163: {
164:
165: EnsureChildControls();
166: RenderChildren(writer);
167: }
168: #endregion
169:
170: #region helper methods
171: private Boolean CheckIfViewExists(SPList list)
172: {
173: Boolean ret = false;
174:
175: foreach (SPView view in list.Views)
176: {
177: if (view.Title.ToLower() == this.ViewName.ToLower())
178: {
179: ret = true;
180: }
181: }
182: return ret;
183: }
184: #endregion
185: }
186: }