2010-04-15 131 views
0

只是我使用 { 使用(的SPWeb幅= site.OpenWeb()){ // LST SPList = web.Lists [ 「ManagerInfo」](的SPSite站點= SPContext.Current.Site)寫訪問SharePoint列表項時SharePoint對象模型中的問題?

; 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由所有users.os使用InfoPath此代碼噹噹前登錄用戶不具有權限列表它表示error.when當前登錄用戶具有它正在工作的完整權限。 所以,請告訴我,我可以做些什麼,以便爲所有用戶工作。

回答

0

嘗試以環繞你的代碼邏輯:

SPSecurity.RunWithElevatedPrivileges(delegate() 
{ 
    // insert code here 
} 
2

通過使用這種

使用(SPSite的網站= SPContext.Current.Site){}

你處置SPContext.Current的。站點,你不應該這樣做。同樣考慮唐的建議,試試這個

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); 
      } 
     } 
    } 
}); 
相關問題