2009-07-14 13 views
3

ソースリストデータはsourceListデータテーブルにあり、そのデータをルートリストにコピーしたいと考えています。DataTableをSharePoint SPListにコピーする方法は?

どうすればいいですか?上記の場合の

private void MoveToTopTaskList(DataTable sourceList, SPSite DestinationSiteCollection) 
{ 
    SPWeb Destinationsite = DestinationSiteCollection.OpenWeb(); 
    SPList DestinationList = Destinationsite.Lists[TASKS]; 
    SPListItem DestinationListItem = DestinationList.Items.Add(); 

    foreach (DataRow row in sourceList.Rows) 
    { 

    } 
} 

答えて

2

最善のアプローチは、SPWebオブジェクトのProcessBatchData方法を使用することです。これは、リストアイテムをバッチリストに更新するのに役立ちます。

  1. データをリストに挿入するための詳細が記載されたXMLタグを作成する必要があります。
  2. リストに挿入するレコードの数が多い場合、それをより小さなバッチに分割することを検討してください。あなたが1,000レコードを持っているとすれば、それを2つの500セットにしてください。
  3. XMLを構築する際には、StringBuilderクラスを使用して文字列を追加してください。あなたはOMを使用してそれを実行したい場合は
  4. は場合ProcessBatchData

の詳細については、これらのリンクLink1Link2Link3を参照してください。そして、しかし、私は何とかデータテーブルのデフォルトのビューを利用することができ、

`SPWeb Destinationsite = DestinationSiteCollection.OpenWeb(); 
SPList DestinationList = Destinationsite.Lists[TASKS];  
SPListItem DestinationListItem = DestinationList.Items.Add(); 
    foreach (DataRow row in sourceList.Rows) 
{ 
    DestinationListItem = DestinationList.Items.Add(); 
    DestinationListItem["Field1"]=row["Col"].ToString(); 
    DestinationListItem["Fieldn"]=row["Coln"].ToString(); 
    DestinationListItem.Update() 

} 

`

+0

マイリストが長すぎないコードですか? – Azra

+0

はい、DefaultViewを使用することができます。上記のコードスニペットで説明したように、For Eachコードと操作を使用して、DataTableの既定のビューも同様に反復できます。 – Kusek

+0

デフォルトビューを使用するコードサンプルをいくつか用意してください。 私はばかに聞こえるかもしれませんが、私は混乱しています。 – Azra

関連する問題