2017-09-13 22 views
1

Je souhaite modifier la colonne OrderID existante dans un rapport pour qu'elle soit un lien hypertexte. Donc ajouté le code <Action> suivant. Mais il lance l'erreur suivante. Quelqu'un pourrait-il m'aider s'il vous plaît? Je suis relativement nouveau pour travailler avec SSRS Reports. Merci d'avance.comment ajouter un lien hypertexte à une colonne dans le fichier .rdl

Erreur:

Unhandled Exception: System.Web.Services.Protocols.SoapException: 
System.Web.Services.Protocols.SoapException: The report definition is 
not valid. Details: The element 'Textbox' in namespace 
'http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition' 
has invalid child element 'Action' in namespace 
'http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition'. 
List of possible elements expected: 'Style, ActionInfo, Top, Left, 
Height, Width, ZIndex, Visibility, ToolTip, DocumentMapLabel, 
Bookmark, RepeatWith, CustomProperties, Paragraphs, CanGrow, 
CanShrink, HideDuplicates, ToggleImage, UserSort, KeepTogether, 
DataElementName, DataElementOutput, DataElementStyle' in namespace 
'http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition' 
as well as any element in namespace '##other'. at 
Microsoft.ReportingServices.WebServer.ReportingService2005Impl.CreateReport(String 
Report, String Parent, Boolean Overwrite, Byte[] Definition, 
Property[] Properties, Warning[]& Warnings) at 
Microsoft.ReportingServices.WebServer.ReportingService2005.CreateReport(String 
Report, String Parent, Boolean Overwrite, Byte[] Definition, 
Property[] Properties, Warning[]& Warnings) at 
System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage 
message, WebResponse response, Stream responseStream, Boolean 
asyncCall) at 
System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String 
methodName, Object[] parameters) at 
Microsoft.SqlServer.ReportingServices2005.ReportingService2005.CreateReport(String 
Report, String Parent, Boolean Overwrite, Byte[] Definition, 
Property[] Properties) at 
RdlSync.Repository.RemoteRdlRepository.AddRdl(IRdlFile file) at 
RdlSync.Controller.RdlReconciler.Sync(Boolean commit, Boolean useMd5, 
Boolean force) at RdlSync.Program.Main(String[] args) 

code fichier .rdl:

<Body> 
<ReportItems> 
    <Rectangle Name="RectMain"> 
    <ReportItems> 
     <Tablix Name="tblMainReport"> 
     <TablixBody> 
     <TablixCell> 
      <CellContents> 
      <Textbox Name="orderID"> 
       <Action> 
        <Hyperlink>="javascript:window.location='QuickSearch.aspx?searchType=1&amp;amp;searchValue=" &amp; Fields!OrderId.Value &amp; "'"</Hyperlink> 
       </Action> 
       </Textbox> 
       </CellContents> 
       </TablixCell> 
     .....</TablixBody> 
     .... 
</ReportItems> 
</Body> 
+0

Ne pas oublier de définir la propriété EnableHyperlinks du rapport vrai - https://msdn.microsoft.com/en-us/library/microsoft.reporting.winforms.localreport.enablehyperlinks.aspx – InitK

Répondre

2

Mes liens ressemblent à ceci:

<ActionInfo> 
    <Actions> 
    <Action> 
     <Hyperlink> [link goes here] </Hyperlink> 
    </Action> 
    <Actions> 
<ActionInfo> 

Cela peut être votre problème, comme indiqué par cette ligne dans l'erreur:

List of possible elements expected: 'Style, ActionInfo, Top, ...

Personnellement, j'aime limiter l'édition directe de .rdl le code, autant que possible, et utiliser l'onglet Création dans Visual Studio pour modifier le fichier à la place. J'ai trouvé que changer le XML peut être très sujet aux erreurs si la structure n'est pas parfaite, donc je l'enregistre en dernier recours.

Pour fixer la structure XML, vous devez faire quelque chose comme ceci:

<Textbox Name="orderID"> 
    <ActionInfo> 
    <Actions> 
     <Action> 
     <Hyperlink>="javascript:window.location='QuickSearch.aspx?searchType=1&amp;amp;searchValue=" &amp; Fields!OrderId.Value &amp; "'"</Hyperlink> 
     </Action> 
    <Actions> 
    <ActionInfo> 
</Textbox> 

Si vous devez modifier le code directement, vous trouverez très probablement la définition du rapport très utile, ce qui est lié dans l'erreur. Il renvoie à la page this qui vous indique le schéma, c'est-à-dire les règles de structuration du RDL.

+0

Merci @McGlothlin. Mais quand cliqué sur le lien hypertexte, il lance l'erreur de serveur. Erreur: Erreur de serveur dans l'application '/ Reports'. La ressource est introuvable. Description: HTTP 404. La ressource que vous recherchez (ou l'une de ses dépendances) a pu être supprimée, son nom a été modifié ou elle est temporairement indisponible. Veuillez vérifier l'URL suivante et assurez-vous qu'elle est épelée correctement. URL demandée: /Reports/QuickSearch.aspx Mais la même URL a fonctionné dans l'autre rapport. – ranp

+0

Réessayez avec l'URL complète, c'est-à-dire le chemin absolu vers la ressource. Si cela ne fonctionne pas, assurez-vous que votre syntaxe est correcte. Découvrez cette question qui peut vous aider à explorer les possibilités: https://stackoverflow.com/questions/1597258/ssrs-relative-url-hyperlink – McGlothlin

+0

Le chemin absolu fonctionne. C'est juste le chemin relatif ayant cette erreur. ancien rapport a été développé en utilisant ssrs2005 et celui-ci était 2008. Pensez-vous que quelque chose avec l'appel de javascript devrait changer? – ranp