【问题标题】:Sharepoint DataFormWebPartSharepoint DataFormWebPart
【发布时间】:2011-01-23 06:30:39
【问题描述】:

在我的 DataFormWebPart 中,我有一个“DataSourcesString”属性,它引用和查询一个列表。

根据 DataFormWebPart 显示在哪个页面上,我需要能够在“DataSourcesString”中配置查询(在下面的代码中参数化字符串“Dispute Resolution”)。

有谁知道是否有办法通过 XSL 编辑器或参数编辑器修改 Web 部件来对此进行参数化?

与“DataSourcesString”相关的 Web 部件代码 sn-p 如下

  <property name="DataSourcesString" type="string">&lt;%@ Register TagPrefix="sharepoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %&gt;&lt;sharepoint:SPDataSource runat="server" DataSourceMode="List" SelectCommand="&amp;lt;View&amp;gt;&amp;lt;Query&amp;gt;&amp;lt;OrderBy&amp;gt;&amp;lt;FieldRef Name=&amp;quot;ID&amp;quot;/&amp;gt;&amp;lt;/OrderBy&amp;gt;&amp;lt;Where&amp;gt;&amp;lt;Eq&amp;gt;&amp;lt;FieldRef Name=&amp;quot;Primary&amp;quot;/&amp;gt;&amp;lt;Value Type=&amp;quot;Text&amp;quot;&amp;gt;Dispute Resolution&amp;lt;/Value&amp;gt;&amp;lt;/Eq&amp;gt;&amp;lt;/Where&amp;gt;&amp;lt;/Query&amp;gt;&amp;lt;/View&amp;gt;" UseInternalName="True" IncludeHidden="True" ID="datasource1"&gt;

谢谢!我很感激如果没有屏幕截图,这可能不太清楚..

【问题讨论】:

  • 您可以使用 SharePoint Designer 来配置它吗?

标签: sharepoint moss web-parts


【解决方案1】:

您可以使用 DataForm 上的 QueryString 参数来执行此操作。我假设您只能导出 webpart。因此,导出 webpart 并将 .webpart 保存到您的桌面。打开它并像这样修改它:

在您的 DataSourcesString 中完全删除 where 子句:

<property name="DataSourcesString" type="string">&lt;%@ Register TagPrefix="sharepoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %&gt;&lt;sharepoint:SPDataSource runat="server" DataSourceMode="List" SelectCommand="&amp;lt;View&amp;gt;&amp;lt;Query&amp;gt;&amp;lt;OrderBy&amp;gt;&amp;lt;FieldRef Name=&amp;quot;ID&amp;quot;/&amp;gt;&amp;lt;/OrderBy&amp;gt;&amp;lt;/Query&amp;gt;&amp;lt;/View&amp;gt;" UseInternalName="True" IncludeHidden="True" ID="datasource1"&gt;

&lt;property name="ParameterBindings" type="string"&gt;节点中,添加:

&lt;ParameterBinding Name="MyVariable" Location="QueryString(MyVar)"/&gt;

在 Web 部件本身的 XSL 中,找到 &amp;lt;xsl:param name="dvt_partguid" /&amp;gt; 并在其下方添加:

&lt;xsl:param name="MyVar" /&gt;

最后找到select="/dsQueryResponse/Rows/Row修改为:

select="/dsQueryResponse/Rows/Row[@Primary='$MyVar']

保存 webpart,将其上传回来,您现在应该可以通过将 MyVar=Whatever 添加到您的查询字符串来过滤它

【讨论】:

  • 谢谢,您能告诉我在哪里可以编辑 Web 部件的查询字符串吗?
  • 我发现我已经连接到 Web 部件上的查询字符串。但无法弄清楚在 MyVar 的参数编辑器中输入什么。我试过了,但没有得到正确的结果... ParameterBinding Name="MyVariable" Location="QueryString(lt;Where&gt;&lt;Eq&gt;&lt;FieldRef Name=&quot;Primary& quot;/&gt;&lt;Value Type=&quot;Text&quot;&gt;争议解决&lt;/Value&gt;&lt;/Eq&gt;&lt;/哪里&gt;)"/>
  • 它应该和我粘贴的完全一样:<ParameterBinding Name="MyVariable" Location="QueryString(MyVar)"/> - 这告诉它获取名为“MyVar”的 QueryString 参数
  • 谢谢,但我想问的是应该在 Web 部件配置的哪个位置编辑查询字符串?
【解决方案2】:

我发现在运行时操作参数的唯一方法是使用 C# 代码。

以下是所需的步骤:

  1. 将 DataFormWebPart 代码转储到 ascx 控件中。 (如果您愿意,也可以使用自定义 Web 部件)。
  2. 在控件背后的代码中,通过它的 ID 引用您的 DataFormWebPart,就像您引用任何其他用户控件(如文本框)一样。
  3. 使用 DataFormWebPart 对象来处理其数据源(如果需要)及其查询。您可以掌握它的所有参数。

【讨论】:

    猜你喜欢
    • 2013-02-07
    • 1970-01-01
    • 2016-04-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    相关资源
    最近更新 更多