2016-08-09 39 views
1

我已經看過了,從我所知道的情況來看,這是一個你不能擁有你的蛋糕並且也不能吃它的情況,但是我想我會問在任何情況下都知道我可以使用的解決方法。列中的多個數據類型

我建立了一個DataGridView控件編程,基本上有兩欄,字段名稱和值,源數據來自我們的CRM系統,它以複雜的方式存儲,所以這被認爲是最好的格式檢索。

我遇到的問題是,它將不會呈現從數據庫中繪製HTML標記時,與電子郵件地址相同,我手動將它們轉換爲hrefs,以便他們可以簡單地在頁面上單擊以打開新郵件。

在下面的例子中,存儲在數據庫中的是http://地址,我將它製作成html標籤,否則它只是將URL顯示爲純文本。

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

Display of data - added href tags

從項目我讀過,加入的HTMLEncode的價值會的工作,但事實並非如此。

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

Display of data - added htmlencode

有沒有人對我怎樣才能使此列顯示兩個字符串和超鏈接的任何想法?

我使用的完整的方法是在這裏:

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

這個問題涉及到網頁窗體或窗體?您正在使用Windows窗體[tag:datagridview]標籤,但也使用[tag:asp.net]標籤。 –

回答

0

您可以設置列被DataGridViewLinkColumn所以你

alldc = New DataColumn() 

必須更換

alldc = New DataGridViewLinkColumn() 

和將列設置爲真

alldc.UseColumnTextForLinkValue = True 

你已經試過了嗎?

+0

該類適用於Windows窗體而不適用於Web內容。 https://www.google.co.uk/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=datagridviewlinkcolumn+asp+net – BeironJohn

相關問題