2

CAML を使用して Web サービスを介して SharePoint リストをクエリし、C#/ASP.Net の GridView に出力しています。私が抱えている問題は、クエリの「ViewFields」部分で指定したものよりも多くの列が表示されていることです (例: 以下に示す)。

viewFields.InnerXml = "<ViewFields>" +
                      "<FieldRef Name="Col1" />" +
                      "<FieldRef Name="Col2" />" +
                      "<FieldRef Name="Col3" />" +
                      "<FieldRef Name="Col4" />" +
                      "</ViewFields>";

「QueryOptions」でfalseに設定しようとしました。

指定された列のみが返されるように、誰でもこの問題の解決策を提供できますか?

4

1 に答える 1

0

これは、この質問に対する回答を探している人々を支援するためのものであり、最も効果的な解決策であることがわかりました。

ここからノードのアイデアを取り入れました: SharePoint Web サービスを使用しているときに、リストの特定の列のみを返す方法は?

次に、必要なフィールドをデータテーブルに抽出するプロセスを実行しました。まず、フィールドに適切な量の列を作成します。次に、子ノードを調べて、すべての行データを抽出します。リクエストしたフィールドごとにこれを行います。

  var myData = new DataTable();

        foreach (string field in fields)
        {
            myData.Columns.Add(field);
        }

        foreach (XmlNode node in nodeListItems)
        {
            // rs = RowSet
            if (node.Name == "rs:data")
            {
                for (int i = 0; i < node.ChildNodes.Count; i++)
                {
                    if (node.ChildNodes[i].Name == "z:row")
                    {
                        DataRow row = myData.NewRow();
                        foreach (string field in fields)
                        {
                            var xmlAttributeCollection = node.ChildNodes[i].Attributes;
                            if (xmlAttributeCollection != null)
                                row[field] = xmlAttributeCollection["ows_" + field].Value;
                        }
                        myData.Rows.Add(row);
                    }
                }
            }
        }
        return myData;
于 2013-08-15T09:20:32.960 に答える