Как использовать свойство DataSource в DataFormWebPart - PullRequest
0 голосов
/ 17 марта 2010

Я пишу пользовательскую веб-часть, которая расширяет DataFormWebPart.

    public class MyCustomWebPart : DataFormWebPart{
        // other methods

        public override void DataBind()
        {
            XmlDataSource source =
                new XmlDataSource() { Data = @"
                        <Person>
                            <name cap='true'>Bryan</name>
                            <occupation>student</occupation>
                        </Person>
                        "
                };

            DataSources.Add(source);

            base.DataBind();
        }
     }

Единственная заметная вещь, которую я делаю, - это переопределение метода DataBind (), где я использую xml в качестве источника данных.

После развертывания веб-части я установил для нее следующий XSL:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
  <xsl:template match="/">
    <xmp>
      <xsl:copy-of select="*"/>
    </xmp>
  </xsl:template>
</xsl:stylesheet>

Этот xsl окружит входной xml тегом. Поэтому я ожидал, что веб-часть отобразит исходные данные XML, как я написал в коде на C #. Но то, что отображается в веб-части, это:

  <Person>
    <name cap="true" />
    <occupation />
  </Person>

Все значения внутри самых внутренних тегов исчезают.

Что происходит? Кто-нибудь может мне помочь?

Спасибо.

1 Ответ

1 голос
/ 19 ноября 2010

Я знаю, что прошло несколько месяцев с момента вашего вопроса, но я также столкнулся с той же проблемой и нашел решение.

В этом сообщении на форуме MSDN - http://social.msdn.microsoft.com/forums/en-US/sharepointdevelopment/thread/0a0527b6-3a05-4791-8cc5-9a6de07d23f3

они упомянули, что есть ошибка в привязке навигации xpath xsmldatasource, и разрешается переопределять метод GetXPathNavigator.

перемещение кода из привязки данных в этот метод немедленно решило проблему поиска.

...