2016-08-09 10 views
1

Ich habe einen Blick, und von dem, was ich sagen kann, ist dies ein Fall von Sie können Ihren Kuchen nicht haben und es auch essen, aber ich dachte, ich würde fragen, falls jemand weiß von einem Workaround, den ich verwenden könnte.Mehrere Datentypen in Spalte

Ich baue ein DataGridView-Steuerelement programmatisch, mit im Wesentlichen zwei Spalten, Feldname und Wert, stammen die Quelldaten aus unserem CRM-System, die in einer komplexen Weise gespeichert ist, so wurde dies als das beste Format zu abrufen.

Das Problem, das ich habe, ist, dass es nicht HTML-Tags, wenn sie aus der Datenbank gezeichnet werden, die gleichen mit E-Mail-Adressen, ich sie manuell in hrefs, so dass sie einfach auf die Seite geklickt werden können, zu öffnen Neue e-mail.

Mit dem Beispiel unten, was in der Datenbank gespeichert ist, ist die http: // -Adresse, ich habe es in ein HTML-Tag gemacht, sonst zeigt es nur die URL als Nur-Text.

result.value = "<a href= """ & result.value & ">" & result.value & "</a>" 

Display of data - added href tags

Von Artikel habe ich gelesen habe, funktionieren würde, die Htmlencode auf den Wert hinzufügen, aber es funktioniert nicht.

result.value = HttpUtility.HtmlEncode(result.value) 

Display of data - added htmlencode

Hat jemand irgendwelche Ideen, wie ich diese Spalte Anzeige machen können beide Strings und Hyperlinks?

Die vollständige Methode Ich verwende hier:

Private Sub getData() 
    'DropDownList1.SelectedIndex = 0 
    If DropDownList1.SelectedValue Is "" Then 
     ' assume firstrun 

    Else 
     'assume not firstrun 
     firstrun = False 
     thisClientID = dbconn.getClientID(DropDownList1.SelectedValue) 
     Dim results As List(Of DataDump) = dbconn.GetAllData(thisClientID) 

     Label1.Text = "(CRM ID: " & thisClientID & ")" 

     alldc = New DataColumn() 
     'dc.DataType = System.Type.GetType("system.string") 
     'alldc.ColumnName = "Tab" 
     'alldc.ReadOnly = "True" 
     'AllDataTable.Columns.Add(alldc) 

     alldc = New DataColumn() 
     ' dc.DataType = System.Type.GetType("system.string") 
     alldc.ColumnName = "Field" 
     alldc.ReadOnly = "True" 


     AllDataTable.Columns.Add(alldc) 



     alldc = New DataColumn() 
     'alldc.DataType = System.Type.GetType("system.hyperlink") 
     alldc.ColumnName = "Value" 
     alldc.ReadOnly = "True" 
     AllDataTable.Columns.Add(alldc) 

     CompanyDetailsDataTable = AllDataTable.Clone 
     ConnectionDetailsDataTable = AllDataTable.Clone 
     EnvironmentalConfigurationDataTable = AllDataTable.Clone 
     ModulesInstalledDataTable = AllDataTable.Clone 
     OnlineConfigurationDataTable = AllDataTable.Clone 
     PensionDetailsDataTable = AllDataTable.Clone 
     PeopleDataTable = AllDataTable.Clone 
     SupportDetailsDataTable = AllDataTable.Clone 
     SystemConfigurationDataTable = AllDataTable.Clone 
     UATSystemDataTable = AllDataTable.Clone 

     ' Instantiate the DataSet variable. 
     Dim AllDetailsDataSet As New DataSet() 
     Dim CompanyDetailsDataset As New DataSet() 
     Dim ConnectionDetailsDataset As New DataSet() 
     Dim EnvironmentalConfigurationDataset As New DataSet() 
     Dim ModulesInstalledDataset As New DataSet() 
     Dim OnlineConfigurationDataset As New DataSet() 
     Dim PensionDetailsDataset As New DataSet() 
     Dim PeopleDataset As New DataSet() 
     Dim SupportDetailsDataset As New DataSet() 
     Dim SystemConfigurationDataset As New DataSet() 
     Dim UATSystemDataset As New DataSet() 

     ' Add the new DataTable to the DataSet. 
     AllDetailsDataSet.Tables.Add(AllDataTable) 
     CompanyDetailsDataset.Tables.Add(CompanyDetailsDataTable) 
     ConnectionDetailsDataset.Tables.Add(ConnectionDetailsDataTable) 
     EnvironmentalConfigurationDataset.Tables.Add(EnvironmentalConfigurationDataTable) 
     ModulesInstalledDataset.Tables.Add(ModulesInstalledDataTable) 
     OnlineConfigurationDataset.Tables.Add(OnlineConfigurationDataTable) 
     PensionDetailsDataset.Tables.Add(PensionDetailsDataTable) 
     PeopleDataset.Tables.Add(PeopleDataTable) 
     SupportDetailsDataset.Tables.Add(SupportDetailsDataTable) 
     SystemConfigurationDataset.Tables.Add(SystemConfigurationDataTable) 
     UATSystemDataset.Tables.Add(UATSystemDataTable) 

     For Each result As DataDump In results 
      alldr = AllDataTable.NewRow() 
      Select Case True 
       Case result.value.StartsWith("http") 
        'Hyperlinks 

        result.value = "<a href= """ & result.value & ">" & result.value & "</a>" 
        'result.value = HttpUtility.HtmlEncode(result.value) 
       ' ****** need to make hyperlinks work 
       Case result.value.Contains("\") 
        'Connection Strings 
        Do While result.value.Contains("\\") 
         result.value = Replace(result.value, "\\", "\") 
        Loop 
       Case result.value.Contains("@") And result.value.Contains(".") 
        'Email Addresses - set as hyper link 
        result.value = "<a href= ""mailto:" & result.value & ">" & result.value & "</a>" 
       Case Else 
      End Select 

      'alldr("Tab") = result.tabname 
      alldr("Field") = result.fieldname 
      alldr("Value") = result.value 
      Select Case result.tabname 
       Case "Company Details" 
        CompanyDetailsDataTable.Rows.Add(result.fieldname, result.value) 

       Case "Connection Details" 
        ConnectionDetailsDataTable.Rows.Add(result.fieldname, result.value) 

       Case "Environmental Configuration" 
        EnvironmentalConfigurationDataTable.Rows.Add(result.fieldname, result.value) 

       Case "Modules Installed (Live)" 
        ModulesInstalledDataTable.Rows.Add(result.fieldname, result.value) 

       Case "Online Configuration" 
        OnlineConfigurationDataTable.Rows.Add(result.fieldname, result.value) 

       Case "Pension Details" 
        PensionDetailsDataTable.Rows.Add(result.fieldname, result.value) 

       Case "People" 
        PeopleDataTable.Rows.Add(result.fieldname, result.value) 

       Case "Support Details" 
        SupportDetailsDataTable.Rows.Add(result.fieldname, result.value) 

       Case "System Configuration" 
        SystemConfigurationDataTable.Rows.Add(result.fieldname, result.value) 

       Case "UAT System" 
        UATSystemDataTable.Rows.Add(result.fieldname, result.value) 

       Case Else 

      End Select 
      'AllDataTable.Rows.Add(result.tabname, result.fieldname, result.value) 
     Next 
     CompDetailsGV.DataSource = CompanyDetailsDataset 
     ConnDetailsGV.DataSource = ConnectionDetailsDataset 
     EnvironmentalDetailsGV.DataSource = EnvironmentalConfigurationDataset 
     ModulesDetailsGV.DataSource = ModulesInstalledDataset 
     OnlineDetailsGV.DataSource = OnlineConfigurationDataset 
     PensionDetailsGV.DataSource = PensionDetailsDataset 
     peopleDetailsGV.DataSource = PeopleDataset 
     SupportDetailsGV.DataSource = SupportDetailsDataset 
     SystemDetailsGV.DataSource = SystemConfigurationDataset 
     UATDetailsGV.DataSource = UATSystemDataset 


     CompDetailsGV.DataBind() 
     ConnDetailsGV.DataBind() 
     EnvironmentalDetailsGV.DataBind() 
     ModulesDetailsGV.DataBind() 
     OnlineDetailsGV.DataBind() 
     PensionDetailsGV.DataBind() 
     peopleDetailsGV.DataBind() 
     SupportDetailsGV.DataBind() 
     SystemDetailsGV.DataBind() 
     UATDetailsGV.DataBind() 
    End If 
End Sub 
+0

Bezieht sich diese Frage auf Webformulare oder Windows Forms? Sie verwenden den Tag Windows Forms [tag: datagridview], verwenden aber auch den Tag [tag: asp.net]. –

Antwort

0

Sie die Spalte DataGridViewLinkColumn gesetzt werden könnte, so dass Ihre

alldc = New DataColumn() 

muss

alldc = New DataGridViewLinkColumn() 

zu

ersetzt werden und Setzen Sie die Spalte auf "True"

alldc.UseColumnTextForLinkValue = True 

Haben Sie das schon versucht?

+0

Diese Klasse ist für Windows Forms und nicht Web Content. https://www.google.co.uk/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=datagridviewlinkcolumn+asp+net – BeironJohn