您的位置:首页 > 其它

实现动态查询列表视图数据

2009-11-04 00:17 302 查看
在实际项目中经常会遇到客户要求查询列表视图要像一般的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;
}
}

希望对大家有所帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐