2016-08-09 11 views
1

私は一見を持っていますが、私はそれがあなたのケーキを食べて食べることができない場合ですが、私は誰かが知っている場合私が使用できる回避策の複数のデータ型列

基本的に2つの列、フィールド名と値を使用してプログラムでDataGridViewコントロールを構築していますが、ソースデータは複雑な方法で格納されているCRMシステムから取得されています。検索する。

私が抱えている問題は、HTMLタグがデータベースから引き出されたときにレンダリングされないことです。電子メールアドレスと同じですが、手動でそれらをhrefに変えてページ上をクリックするだけで新しいメール。

以下の例では、DBに格納されているものは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

この質問はWebフォームまたはWindowsフォームに関連していますか? windows forms [tag:datagridview]タグを使用していますが、[tag:asp.net]タグも使用しています。 –

答えて

0

あなたの

alldc = New DataColumn() 

alldc = New DataGridViewLinkColumn() 

に交換する必要がありますので、DataGridViewLinkColumnするように列を設定でき、列をtrueに設定する

alldc.UseColumnTextForLinkValue = True 

これはもう試しましたか?

+0

そのクラスはWebフォーム用であり、Webコンテンツ用ではありません。 https://www.google.com/support/bin/bin/answer.py?hl=ja – BeironJohn

関連する問題