2017-12-28 17 views
0

Meine eigene VSTS-Erweiterung, die ein Grid mit einer Liste von Fehlern zurückgibt, die mit einem wiql gelesen werden.VSTS-Erweiterungen - Hyperlinks in der Grid-Quelle

Ich möchte, dass das (UI Control) Grid den Fehlertitel und den Hyperlink zur Fehler-URL enthält, so dass es möglich ist, auf den Titel zu klicken, um zum Fehler zu springen. Ich konnte keine Möglichkeit finden, das zu tun, aber ich glaube nicht, dass das nicht möglich ist.

Dies ist, wie ich meine Quelle an das Netz bauen:

var sourceArray = workItems.map(function (w) { 
     return [ 
      w.id, 
      w.fields["System.Title"], 
      w.fields["System.State"], 
      w.fields["GrundfosScrum.gfSeverity"], 
      w.fields["GrundfosScrum.gfLikelihood"], 
      w.fields["System.AssignedTo"]]; 
    }); 

Und später:

var options = { 
     width: "100%", 
     height: "500px", 
     source: sourceArray, 
     columns: [ 
      { text: "ID", index: 0, width: 100, headerCss: "mystyle" }, 
      { text: "Title", index: 1, width: 200, headerCss: "mystyle" }, 
      { text: "State", index: 2, width: 100, headerCss: "mystyle" }, 
      { text: "Severity", index: 3, width: 200, headerCss: "mystyle" }, 
      { text: "Likelihood", index: 4, width: 200, headerCss: "mystyle" }, 
      { text: "Assigned To", index: 5, width: 300, headerCss: "mystyle" }, 
     ] 
    }; 

I w.fields["System.Title"] mit w.fields["System.Title"].link(w.url), das Ergebnis war html Hyperlink in der Tabelle zu ersetzen versucht anstelle eines Hyperlinks innerhalb des Rasters.

Irgendwelche Ideen?

+0

Wer hat Ideen? oder wird es einfach nicht unterstützt? –

Antwort

0

Dies wird von Add Link im Grid nicht unterstützt. Aber Sie können Open row details Methode aufrufen, um die gewünschte Funktion zu erreichen. Rufen Sie die URL-Informationen ab und öffnen Sie ein neues Fenster, wenn die Methode openRowDetail ausgelöst wird.

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>Open Row Sample</title> 
    <script src="sdk/scripts/VSS.SDK.js"></script> 
</head> 
<body> 
    <script type="text/javascript"> 
     VSS.init({ 
      explicitNotifyLoaded: true, 
      usePlatformScripts: true, 
      usePlatformStyles: true  
     }); 
    </script> 
    <h1>Open Row Sample</h1> 
    <div id="grid-container"></div> 
    <script type="text/javascript"> 
    VSS.require(["VSS/Controls", "VSS/Controls/Grids"], 
    function (Controls, Grids) { 
    var dataSource = []; 
    dataSource.push({key: "VisualStudio", value: "https://www.visualstudio.com/"}); 
    dataSource.push({key: "Bing", value: "https://www.bing.com/"}); 

    var grid = Controls.create(Grids.Grid, $("#grid-container"), { 
     height: "1000px", 
     columns: [ 
      { text: "Property key", index: "key", width: 150 }, 
      { text: "Property value", index: "value", width: 600 } 
     ], 
     source: dataSource, 
     openRowDetail: (index) => { 
     var info = grid.getRowData(index); 
     window.open(info.value); 
    } 
    }); 
    VSS.notifyLoadSucceeded(); 
    }); 
    </script> 
</body> 
</html> 
+0

Danke. Das von Ihnen angegebene Beispiel zeigt die Syntax mit TypeScripte. Könnten Sie mir mit einem Beispiel mit JavaScript helfen? –

+0

@wolf_guru Es ist fast das Gleiche wie das Beispiel. Siehe meine aktualisierte Antwort für Details. –

+0

Danke mann: o). –