在實際項目中經常會遇到客戶要求查詢列表視圖要像一般的ASP.NET一樣,如果條件簡單讓他們直接用列表視圖篩選功能就可以了。
如果篩選條件很複雜的話,他們就沒辦法直接用列表視圖篩選功能來實現了,那我們怎麼辦呢?
那我們就開發一個查詢功能的WebPart,讓使用者輸入查詢條件來查詢。以下我把最有用的部分發布出來,相信大家都會構造SPQuery查詢語句。
private void cmdListFiltes_Click(object sender, System.EventArgs e)
{
//定義一個SPView
SPView mView = null;
//定義一個需要查詢的ListViewWebPart,
//其實SPList顯示介面中都是用ListViewWebPart顯示的
ListViewWebPart lvSelect = null;
//構造SPQuery查詢字串,查詢字串
string sFiltersQuery = getQueryStr();
//找出你要查詢的ListViewWebPart
//當然你在配置WebPart的時候需要輸入查詢的ListViewWebPart的
foreach (WebPart webPart in WebPartManager.WebParts)
{
//判斷是否是ListViewWebPart類型
if (webPart.GetType() == typeof(ListViewWebPart))
{
if (webPart.UniqueID == SelectListViewWebPartUniqueID)
{
lvSelect = webPart as ListViewWebPart;
break;
}
}
}
//關鍵區段
if (lvSelect != null)
{
//你需要查詢的SPList
SPList list = SPControl.GetContextWeb(this.Context).Lists[listname];
//給SPView賦值
mView = list.Views[new Guid(lvSelect.ViewGuid)];
//查詢之後從那裡來回到那裡去
sSelectViewOrgQuery = mView.Query;
//給SPView中
mView.Query = sFiltersQuery;
//把SPView的SchemaXml賦給ListViewWebPart的ListViewXml
lvSelect.ListViewXml = mView.SchemaXml;
//回到原始狀態,不要改變SPView的SPQuery值
mView.Query = sSelectViewOrgQuery;
}
}
希望對大家有所協助。
文章來源:http://www.cnblogs.com/SeaBird/archive/2009/11/04/1595641.html