トップ回答者
EventからのListItemのデータの取得について

質問
-
初めてお世話になります。
SharePointで作成したListに変更(追加・更新)があった際に、List全体の内容をExcelなど
外部に出力したいと考えています。EventRecieverにより、propertiesからListItemなどは取得できるのですが、
ListItemが持っている情報(任意で追加した列の値)を取得することができません。
List毎に異なる列を持っている場合にも対応できるよう、随時ListのFieldを取得して値を取得したいのですが。。。この様な動作は可能でしょうか。
サンプル等交えてお教え頂けると大変助かります。また、捕捉の情報が必要であれば、ご指摘頂けるとありがたいです。
宜しくお願い致します。
2010年3月24日 10:20
回答
-
ご要件がいまひとつ判りませんので、お役に立てるかは微妙なのですが・・・
SharePoint標準のWebサービス経由では駄目でしょうか?変更をトリガにして、Webサービスをコールすれば、あとは出力先をどうするかだけかな、と思いますが。
参考:
SharePointのGetListitemで値を取得する
http://sharepoint.boo.jp/index.php?e=427GetListItemで大量の行列情報をエクスポートする
http://sharepoint.boo.jp/index.php?e=4332010年3月25日 3:29
すべての返信
-
ご要件がいまひとつ判りませんので、お役に立てるかは微妙なのですが・・・
SharePoint標準のWebサービス経由では駄目でしょうか?変更をトリガにして、Webサービスをコールすれば、あとは出力先をどうするかだけかな、と思いますが。
参考:
SharePointのGetListitemで値を取得する
http://sharepoint.boo.jp/index.php?e=427GetListItemで大量の行列情報をエクスポートする
http://sharepoint.boo.jp/index.php?e=4332010年3月25日 3:29 -
要領を得ず申し訳ありません。
少し具体的にお話させて頂きます。「品名」「更新日」「金額」「個数」「合計金額」の列を作成したListから、アイテムが追加/更新/削除されたタイミングで
それぞれの値を取得し、まずはtextファイルにでも書き出したいと考えています。Listの列は必ずこの列ではなく、「顧客名」など名称が異なる場合にも対応したいと考えています。
ListItemを特定して、 string str1 = ListItem[列名].toString(); のような形で値を取得することはできると思うのですが、
この場合は、列名が事前に分かっていることが前提となると思いますので、変化に対応できません。
そこで、Listの列名を取得する方法がないかと思い、質問致しました。ご回答頂いたwebサービスですが、初心者のため利用方法(記述方法)がわかっていないため、解決できるかまだわかっておりません。
MSDNのサンプルを見ながら、一度試させて頂きます。ありがとうございました。
2010年3月26日 11:06 -
追加で質問をさせて頂きたいと思います。
お教えいただいたGetListItemから、リストの情報を取得することができました。
まだ、、必要な情報のみに絞ることができておらず、全てのデータを取得していますが。帰ってきたXmlNodeから、各項目の情報を配列などで持ちたいのですが
属性の名前を抽出することができません。以下のようなコードでXMLを読み込もうとしているのですが、アドバイスをいただけませんでしょうか。
StringBuilder output = new StringBuilder(); ArrayList attlist = new ArrayList(); using (XmlReader reader = XmlReader.Create(new StringReader(strR))) { XmlWriterSettings ws = new XmlWriterSettings(); ws.Indent = true; ws.ConformanceLevel = ConformanceLevel.Auto; using (XmlWriter writer = XmlWriter.Create(output,ws)) { while (reader.Read()) { // Attributesを持っている場合、ArrayListに入れる。 if (reader.HasAttributes == true) { for (int k = 0; k < reader.AttributeCount; k++) { attlist.Add(reader.GetAttribute(k)); } } // Element名に:が使えないので変換 string newName = ""; if (reader.Name.Contains(":")) { newName = reader.Name.Remove(0,reader.Name.IndexOf(":")+1); } switch (reader.NodeType) { case XmlNodeType.Element: writer.WriteStartElement(newName); break; case XmlNodeType.Text: writer.WriteString(reader.Value); break; case XmlNodeType.XmlDeclaration: case XmlNodeType.ProcessingInstruction: writer.WriteProcessingInstruction(reader.Name, reader.Value); break; case XmlNodeType.Comment: writer.WriteComment(reader.Value); break; case XmlNodeType.EndElement: writer.WriteFullEndElement(); break; } } } }
また、読み込みたいXMLNodeは以下のような形です。
<row ows_ContentTypeId="0x0100372835D459559246979735A52458F470" ows_Title="aaaaaaaaaaaaaaaaaaaaaa" ows__x901a__x756a_="1.00000000000000" ows__x65e5__x4ed8_="2010-03-17T15:00:00Z" ows__x91d1__x984d_="2000.00000000000" ows_ID="1" ows_ContentType="アイテム" ows_Modified="2010-03-31T05:05:19Z" ows_Created="2010-03-17T00:56:20Z" ows_Author="1073741823;#システム アカウント" ows_Editor="1073741823;#システム アカウント" ows_owshiddenversion="76" ows_WorkflowVersion="1" ows__UIVersion="512" ows__UIVersionString="1.0" ows_Attachments="0" ows__ModerationStatus="0" ows_LinkTitleNoMenu="aaaaaaaaaaaaaaaaaaaaaa" ows_LinkTitle="aaaaaaaaaaaaaaaaaaaaaa" ows_SelectTitle="1" ows_Order="100.000000000000" ows_GUID="{8F2BF557-E88D-405D-9996-7F913F8FF9B9}" ows_FileRef="1;#001/Lists/list4/1_.000" ows_FileDirRef="1;#001/Lists/list4" ows_Last_x0020_Modified="1;#2010-03-17T00:56:20Z" ows_Created_x0020_Date="1;#2010-03-17T00:56:20Z" ows_FSObjType="1;#0" ows_PermMask="0x7fffffffffffffff" ows_FileLeafRef="1;#1_.000" ows_UniqueId="1;#{E6CE5E42-4BDC-4AEE-A82C-FF0BCFA33DF6}" ows_ProgId="1;#" ows_ScopeId="1;#{9E7AA433-2E30-46E3-A9EE-CBE023F231E7}" ows__EditMenuTableStart="1_.000" ows__EditMenuTableEnd="1" ows_LinkFilenameNoMenu="1_.000" ows_LinkFilename="1_.000" ows_ServerUrl="/001/Lists/list4/1_.000" ows_EncodedAbsUrl="http://wss/001/Lists/list4/1_.000" ows_BaseName="1_" ows_MetaInfo="1;#" ows__Level="1" ows__IsCurrentVersion="1" xmlns:z="#RowsetSchema">
どうか、よろしくお願い致します。
2010年3月31日 5:28