【发布时间】:2011-10-26 21:11:13
【问题描述】:
我试图找到位于我的 SharePoint 页面上的 SPDataSource 控件。我发现下面的代码可能工作正常,我只是不知道要传递什么。
public static Control FindControlRecursive(Control Root, string Id)
{
if (Root.ID == Id)
return Root;
foreach (Control Ctl in Root.Controls)
{
Control FoundCtl = FindControlRecursive(Ctl, Id);
if (FoundCtl != null)
return FoundCtl;
}
return null;
}
我不知道如何让它搜索整个页面或至少搜索控件所在的 ContentPlaceHolder。
编辑
看起来我在这里有一个更基本的问题。不知道如何解释,但在运行我的代码之前我没有打开页面。我通过以下方式打开网站:
using (SPWeb web = thisSite.Site.OpenWeb("/siteurl/,true))
所以当我尝试查找下面的页面时,我发现对象引用未设置为对象实例。
var page = HttpContext.Current.Handler as Page;
也许我走错了路,我在这里还处于婴儿期,所以我只是在想办法解决问题!
【问题讨论】:
-
请解释一下您为什么尝试通过代码查找 SPDataSource?
-
我有一个用于从模板创建站点的列表的事件处理程序,现在我希望它使用从列表项带来的数据更新模板站点上的 SPDataSource。主要是,我希望更新 SPDataSource 中的 SelectCommand,以便过滤数据。
标签: sharepoint sharepoint-2007