如何在DataFormWebPart中使用DataSource属性

时间:2010-03-16 22:42:08

标签: sharepoint-2007 web-parts

我正在编写一个扩展DataFormWebPart的自定义Web部件。

    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作为数据源。

在部署Web部件后,我将以下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。因此,我希望Web部件能够显示原始的xml数据,就像我在C#代码中编写的那样。但是在网络部分显示的是:

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

最内层标签内的所有值都会消失。

发生了什么事?有人能帮助我吗?

感谢。

1 个答案:

答案 0 :(得分:1)

我知道这是你问题以来的几个月,但我也遇到了同样的问题,并找到了解决方案。

在此MSDN论坛帖子 - http://social.msdn.microsoft.com/forums/en-US/sharepointdevelopment/thread/0a0527b6-3a05-4791-8cc5-9a6de07d23f3

他们提到xsmldatasource xpath导航绑定中存在错误,解决方法是覆盖GetXPathNavigator方法。

将代码从数据绑定移动到此方法立即解决了查找问题。