2015-09-10 114 views
0

我有一個DataTable有一些行。有沒有辦法執行它的CAML查詢。在DataTable SharePoint上運行CAML查詢

或者,如何將此DataTable轉換爲SPList,以便CAML可以在SPList上執行。

private DataTable Process(DataTable d, string s) 
    { 
     DataTable dd = d; 
     SPQuery query = new SPQuery(); 
     query.Query = s; 
     query.ViewAttributes = "Scope = 'RecursiveAll'"; 
     DataTable dtSearch = new DataTable(); 
     SPList Dest = new SPList(); 


     dtSearch = d.GetItems(query).GetDataTable(); 
     return dtSearch; 
    } 

在上面的代碼d.GetItems不能完成。 ???

回答

0

我試過這個來自technet。

private SPList dtConvertSPList(DataTable dt) 
    { 
     SPList newList = null; 
     using (SPSite site = new SPSite("http://sharepointvm")) 
     { 
      using (SPWeb web = site.OpenWeb()) 
      { 



        Guid newListGuid = web.Lists.Add("TempList", "This is my temp list, it will be removed when used", SPListTemplateType.GenericList); 
        newList = web.Lists[newListGuid]; 

        if (newList != null) 
        { 
         /* Loop through the datatable and add columns to the list */ 
         foreach (DataColumn dc in dt.Columns) 
         { 
          newList.Fields.Add(dc.ColumnName, SPFieldType.Text, false); 
         } 

         /* Update the list to get the new fields */ 
         newList.Update(); 


         /* Populate the list from the datatable */ 
         SPListItem newItem = null; 
         foreach (DataRow row in dt.Rows) 
         { 
          /* Create a new item in the list */ 
          newItem = newList.Items.Add(); 
          foreach (DataColumn dc in dt.Columns) 
          { 
           newItem[dc.ColumnName] = row[dc].ToString(); 
           newItem.Update(); 

          } 


         } 
        } 
       } 
     } 
     return newList; 

    } 

但所面臨我的問題是:外for循環即

foreach (DataRow row in dt.Rows) 
         { 
          /* Create a new item in the list */ 
          newItem = newList.Items.Add(); 
          foreach (DataColumn dc in dt.Columns) 
          { 
           newItem[dc.ColumnName] = row[dc].ToString(); 
           newItem.Update(); 

          } 

         } 

這種外循環執行一次出驚喜。

*調試結果: 傳遞給此函數的DataTable有3358條記錄。 newList被創建與所有列都很好,但只有一行,其列中的信息不完整。

需要改善:

循環應該可以正常工作,我應該在哪裏把代碼returnig之後刪除這個newList?