Копирование данных из соединения sharepoint в локальную повторяющуюся таблицу - PullRequest
0 голосов
/ 09 ноября 2018

Я хочу скопировать данные из соединения sharepoint в локальную повторяющуюся таблицу, чтобы я мог изменить и повторно отправить данные.

Я искал статью ниже, которая, кажется, описывает то, что мне требуется: http://www.bizsupportonline.net/infopath2007/copy-rows-from-sharepoint-list-to-main-data-source.htm

Я не знаком с C #, поэтому мне нужна помощь по коду, так как верхняя таблица должна соответствовать нижней таблице в предварительном просмотре

Заранее спасибо

Скриншот формы Infopath

Скриншот вторичного соединения

Предварительный просмотр формы после нажатия кнопки

код C #, связанный с кнопкой private void AddItem (заголовок строки, идентификатор строки) { XmlDocument doc = new XmlDocument (); XmlNode group = doc.CreateElement ("group2", NamespaceManager.LookupNamespace ( "мой"));

        XmlNode field = doc.CreateElement("field1",
        NamespaceManager.LookupNamespace("my"));
        XmlNode node = group.AppendChild(field);
        node.InnerText = title;

        field = doc.CreateElement("field2",
        NamespaceManager.LookupNamespace("my"));
        node = group.AppendChild(field);
        node.InnerText = id;

        doc.AppendChild(group);

        MainDataSource.CreateNavigator().SelectSingleNode(
        "/my:myFields/my:group1",
        NamespaceManager).AppendChild(doc.DocumentElement.CreateNavigator());
    }

    private void DeleteFirstEmptyItem()
    {
        XPathNavigator domNav = MainDataSource.CreateNavigator();
        XPathNavigator itemNav = domNav.SelectSingleNode(
        "/my:myFields/my:group1/my:group2[1]",
        NamespaceManager);

        if (itemNav != null)
            itemNav.DeleteSelf();
    } 

    public void CTRL13_5_Clicked(object sender, ClickedEventArgs e)
    {
        XPathNavigator secDSNav = DataSources["TestCustomList"].CreateNavigator();

        // Retrieve the rows of the secondary data source
        XPathNodeIterator rows = secDSNav.Select(
        "/dfs:myFields/dfs:dataFields/d:SharePointListItem_RW",
        NamespaceManager);

        // Loop through the rows of the secondary data source and fill the repeating table
        while (rows.MoveNext())
        {
            string title = rows.Current.SelectSingleNode(
            "/dfs:myFields/dfs:dataFields/d:SharePointListItem_RW/d:Title", NamespaceManager).Value;
            string id = rows.Current.SelectSingleNode(
            "/dfs:myFields/dfs:dataFields/d:SharePointListItem_RW/d:ID", NamespaceManager).Value;

            // Add the item to the repeating table
            AddItem(title, id );
        }

        // Remove the first empty item from the repeating table
        DeleteFirstEmptyItem();
    }

1 Ответ

0 голосов
/ 12 ноября 2018

После некоторых проб и ошибок похоже, что объявление строковых переменных title и id не должно ссылаться на полный Xpath

while (rows.MoveNext())
{
    string title = rows.Current.SelectSingleNode(
    "d:Title", NamespaceManager).Value;
    string id = rows.Current.SelectSingleNode(
    "d:ID", NamespaceManager).Value;

     // Add the item to the repeating table
     AddItem(title, id);
}

Желаемый результат

...