我刚写了
使用(SPSite site = SPContext.Current.Site) { 使用(SPWeb web = site.OpenWeb()) { // SPList lst = web.Lists [“ManagerInfo”]; SPList lst = web.Lists [strlist];
SPQuery getUserNameQuery = new SPQuery();
// getUserNameQuery.Query = "<Where><And><Eq><FieldRef Name=\"Region\" /><Value Type=\"Text\">" + strRegion + "</Value></Eq><And><Eq><FieldRef Name=\"PM_x0020_First_x0020_Name\" /><Value Type=\"Text\">" + pmFName + "</Value></Eq><Eq><FieldRef Name=\"PM_x0020_Last_x0020_Name\" /><Value Type=\"Text\">" + pmLname + "</Value></Eq></And></And></Where>";
// getUserNameQuery.Query = "<Where><And><Eq><FieldRef Name=\"PM_x0020_First_x0020_Name\" /><Value Type=\"Text\">" + pmFName + "</Value></Eq><Eq><FieldRef Name=\"PM_x0020_Last_x0020_Name\" /><Value Type=\"Text\">" + pmLname + "</Value></Eq></And></Where>";
getUserNameQuery.Query = "<Where><Eq><FieldRef Name=\"PM_x0020_Name\" /><Value Type=\"Text\">" + loginName + "</Value></Eq></Where>";
SPListItemCollection items = lst.GetItems(getUserNameQuery);
foreach (SPListItem item in items)
{
managerFName = item["Manager Name"].ToString();
strAccounting = item["Accounting"].ToString();
managerFName = managerFName.Replace(".", " ");
strAccounting = strAccounting.Replace(".", " ");
// isFound = true;
XPathNavigator managerName = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:txtManagerName", NamespaceManager);
managerName.SetValue(managerFName);
XPathNavigator accountingName = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:txtAccountingName", NamespaceManager);
accountingName.SetValue(strAccounting);
}
} }
我在infopath中使用了这个代码,这个infopath正在被所有users.os使用。当前登录用户对列表没有权限时显示错误。当前登录用户具有完全权限时它正在工作。 所以请告诉我我能做些什么来为所有用户工作。答案 0 :(得分:2)
使用此
使用(SPSite site = SPContext.Current.Site){}
你正在处理你不应该做的SPContext.Current.Site。考虑到Don的建议,试试这个
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(SPContext.Current.Site.ID))
{
using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID))
{
//SPList lst = web.Lists["ManagerInfo"];
SPList lst = web.Lists[strlist];
SPQuery getUserNameQuery = new SPQuery();
// getUserNameQuery.Query = "<Where><And><Eq><FieldRef Name=\"Region\" /><Value Type=\"Text\">" + strRegion + "</Value></Eq><And><Eq><FieldRef Name=\"PM_x0020_First_x0020_Name\" /><Value Type=\"Text\">" + pmFName + "</Value></Eq><Eq><FieldRef Name=\"PM_x0020_Last_x0020_Name\" /><Value Type=\"Text\">" + pmLname + "</Value></Eq></And></And></Where>";
// getUserNameQuery.Query = "<Where><And><Eq><FieldRef Name=\"PM_x0020_First_x0020_Name\" /><Value Type=\"Text\">" + pmFName + "</Value></Eq><Eq><FieldRef Name=\"PM_x0020_Last_x0020_Name\" /><Value Type=\"Text\">" + pmLname + "</Value></Eq></And></Where>";
getUserNameQuery.Query = "<Where><Eq><FieldRef Name=\"PM_x0020_Name\" /><Value Type=\"Text\">" + loginName + "</Value></Eq></Where>";
SPListItemCollection items = lst.GetItems(getUserNameQuery);
foreach (SPListItem item in items)
{
managerFName = item["Manager Name"].ToString();
strAccounting = item["Accounting"].ToString();
managerFName = managerFName.Replace(".", " ");
strAccounting = strAccounting.Replace(".", " ");
// isFound = true;
XPathNavigator managerName = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:txtManagerName", NamespaceManager);
managerName.SetValue(managerFName);
XPathNavigator accountingName = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:txtAccountingName", NamespaceManager);
accountingName.SetValue(strAccounting);
}
}
}
});
答案 1 :(得分:0)