Отредактируйте заголовок столбца веб-части BDC Sharepoint с помощью XSLT - PullRequest
0 голосов
/ 03 июня 2009

Я хотел бы изменить имена столбцов базы данных веб-части списка BDC с помощью файла XSL.

Мой SQL-запрос "Select BATCH_ID...", я хочу изменить имя этого столбца "BATCH_ID" на "ID", используя XSL. Я также хочу знать, как $ColName_0 заполняется значением 'BATCH_ID'?

Внутри шаблона dvt.headerfield это сортировка и добавление меню сортировки. Но $ColName_0 заполняется до вызова этого шаблона. Код XSLT следующий:

<xsl:stylesheet 
  version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime"
  xmlns:asp="http://schemas.microsoft.com/ASPNET/20"
  xmlns:msxsl="urn:schemas-microsoft-com:xslt"
  xmlns:SharePoint="Microsoft.Sharepoint.WebControls"
  exclude-result-prefixes="xsl msxsl ddwrt"
>
  <xsl:output method="xml" indent="yes"/>
  <xsl:param name="dvt_partguid" />
  <xsl:param name="ColName_0"></xsl:param>

  <xsl:template name="dvt.headerfield">
    <xsl:param name="fieldname" />
    <xsl:param name="fieldtitle" />
    <xsl:param name="displayname" />
    <xsl:param name="fieldtype">0</xsl:param>

    <table CtxNum="1" cellspacing="0" class="ms-unselectedtitle" onmouseover="OnMouseOverAdHocFilter(this, '{concat($displayname,$fieldname, $fieldtype, $dvt_partguid)}')">
      <tr>
        <td width="100%" class="ms-vb" nowrap="">
          <a>
            <xsl:attribute name="href">javascript: <xsl:value-of select="ddwrt:GenFireServerEvent(('dvt_sortfield;dvt_sortdir'))" />;</xsl:attribute>
            <xsl:value-of select="$fieldtitle"/>
          </a>                  
        </td>
        <td>
          <img src="/_layouts/images/blank.gif" width="13" style="visibility: hidden" alt="" />
        </td>
      </tr>
    </table>
  </xsl:template>

  <xsl:template match="/">
    <xsl:call-template name="dvt_1" />
  </xsl:template>

  <xsl:template name="dvt_1">
    <xsl:variable name="dvt_StyleName">Table</xsl:variable>

    <table id="BdwpRows" border="0" width="100%" cellpadding="2" cellspacing="0">
      <tr valign="top">
        <th class="ms-vh" width="1" />
        <th class="ms-vh" align="left">
          <xsl:call-template name="dvt.headerfield" ddwrt:atomic="1">
            <xsl:with-param name="fieldname">@BATCH_ID</xsl:with-param>
            <xsl:with-param name="fieldtitle">
              <xsl:value-of select="$ColName_0" />
            </xsl:with-param>
            <xsl:with-param name="displayname">
              <xsl:value-of select="$ColName_0" />
            </xsl:with-param>
            <xsl:with-param name="fieldtype">text</xsl:with-param>
          </xsl:call-template>
        </th>
      </tr>         
    </table>
  </xsl:template>
</xsl:stylesheet>

1 Ответ

0 голосов
/ 17 февраля 2010

Не уверен, что это лучший способ, но вот как я это сделал:

Изменение:

<xsl:with-param name="fieldname">@BATCH_ID</xsl:with-param> 
    <xsl:with-param name="fieldtitle"> 
        <xsl:value-of select="$ColName_0" /> 
    </xsl:with-param> 
    <xsl:with-param name="displayname"> 
        <xsl:value-of select="$ColName_0" /> 
    </xsl:with-param> 
<xsl:with-param name="fieldtype">text</xsl:with-param> 

Кому:

<xsl:with-param name="fieldname">@BATCH_ID</xsl:with-param> 
    <xsl:with-param name="fieldtitle"> 
        ID 
    </xsl:with-param> 
    <xsl:with-param name="displayname"> 
        <xsl:value-of select="$ColName_0" /> 
    </xsl:with-param> 
<xsl:with-param name="fieldtype">text</xsl:with-param> 
...