ReportViewer のデータにリンクを含めたいのですがどのように書いたらいいですか?
教えてください。
string[] lists = { " 名前 ", "11", "12", "13"・・・ }; string[] header = { "user", "day11", "day12", "day13", ・・・ }; DataRow row; int[] ryokin = new int[header.Length]; int sNen = DateTime.Now.Year; DataTable table = new DataTable(); for (int i = 0; i < lists.Length; i++) { DataColumn col = new DataColumn(); col.DataType = Type.GetType("System.String"); col.ColumnName = header[i]; col.Caption = lists[i]; table.Columns.Add(col); } foreach (var dat in details) { row = table.NewRow(); HyperLink lnk = new HyperLink(); string txt = (string)Session["myAdress"] + "/ByoriIItakuForm.aspx"; 自分自身のアドレス lnk.NavigateUrl = txt; lnk.Text = dat.Value.DrMei; //row[0] = //"<a href = 'ByoriIitakForm.aspx'>" + dat.Value.DrMei + "</a>"; こっちも同じような結果になった row[0] = lnk; row[1] = dat.Value.day11; row[2] = dat.Value.day12; row[3] = dat.Value.day13; row[4] = dat.Value.day14;
リンクを作成したい部分を下記のようにエンコード(?)してみましたが、リンクになりませんでした。
C#
1row[0] = HttpUtility.HtmlEncode("<a href = 'ByoriIitakForm.aspx'>")+ dat.Value.DrMei + HttpUtility.HtmlEncode("</a>");
<a href = 'ByoriIitakForm.aspx'> 名前 </a>
Windows10 ASP.NET C# VS2015
C#
1public DataTable MakeItak() 2 { 3 DataTable table; 4 string doc = (string)Session["ItakDocMei"]; // 名前が入る 5 string doc2 = doc.Replace(" ", ""); 6 doc2 = doc2.Replace(" ", ""); 7 8 if (doc2 == "全員") 9 table = MakeItakByoriIList(); 10 else 11 table = MakeItakByoriI(); 12 13 return table; 14 } 15 16 public DataTable MakeItakByoriIList(/*IEnumerable<AllocationTable> alloc*/) 17 { 18 // 売上一覧は、指定月から1年間表示する 19 int pos = 1; // Array.IndexOf(tsuki, tsu); 20 //string[] tsuki = { "", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14" }; 21 string[] lists = { " 名前 ", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", " 合 計" }; 22 string[] header = { "user", "day11", "day12", 23 "day13", "day14", "day15", "day16", "day17", "day18", "day19", "day20", "day21", "day22", "day23", "day24", "day25", 24 "day26", "day27", "day28", "day29", "day30", "day31", "day01", "day02", "day03", "day04", "day05", "day06", "day07", "day08", "day09", "day10", "day32" }; 25 26 DataRow row; 27 int[] ryokin = new int[header.Length]; 28 int sNen = DateTime.Now.Year; 29 DataTable table = new DataTable(); 30 31 for (int i = 0; i < lists.Length; i++) 32 { 33 DataColumn col = new DataColumn(); 34 35 col.DataType = Type.GetType("System.String"); 36 col.ColumnName = header[i]; 37 col.Caption = lists[i]; 38 39 table.Columns.Add(col); 40 } 41 42 string date = (string)Session["Itak"]; // 日付 202011 を取得 43 var alloc = GetByoriIData(date); // 上記日付のデータ取得 44 ShukeiAll(alloc); // 上記で取得した日付を表示用に集計 45 // GetByoriIData() と ShukeiAll() は問題ないので割愛します。データはDBより取得 46 // details は、上記での集計結果が入っています。 47 foreach (var dat in details) 48 { 49 row = table.NewRow(); 50 51 HyperLink lnk = new HyperLink(); 52 // 自分自身 53 string txt = (string)Session["myAdress"] + "/ByoriIItakuForm.aspx"; 54 lnk.NavigateUrl = txt; 55 lnk.Text = dat.Value.DrMei; 56 //LinkButton lnk = new LinkButton(); 57 //lnk.PostBackUrl = txt; 58 //lnk.Text = dat.Value.DrMei; 59 60 row[0] = HttpUtility.HtmlEncode("<a href = 'ByoriIitakForm.aspx'>")+ dat.Value.DrMei + HttpUtility.HtmlEncode("</a>"); 61 //row[0] = lnk; //dat.Value.DrMei; 62 row[1] = dat.Value.day11; 63 row[2] = dat.Value.day12; 64 row[3] = dat.Value.day13; 65 row[4] = dat.Value.day14; 66 row[5] = dat.Value.day15; 67 row[6] = dat.Value.day16; 68 row[7] = dat.Value.day17; 69 row[8] = dat.Value.day18; 70 row[9] = dat.Value.day19; 71 row[10] = dat.Value.day20; 72 row[11] = dat.Value.day21; 73 row[12] = dat.Value.day22; 74 row[13] = dat.Value.day23; 75 row[14] = dat.Value.day24; 76 row[15] = dat.Value.day25; 77 row[16] = dat.Value.day26; 78 row[17] = dat.Value.day27; 79 row[18] = dat.Value.day28; 80 row[19] = dat.Value.day29; 81 row[20] = dat.Value.day30; 82 row[21] = dat.Value.day31; 83 row[22] = dat.Value.day01; 84 row[23] = dat.Value.day02; 85 row[24] = dat.Value.day03; 86 row[25] = dat.Value.day04; 87 row[26] = dat.Value.day05; 88 row[27] = dat.Value.day06; 89 row[28] = dat.Value.day07; 90 row[29] = dat.Value.day08; 91 row[30] = dat.Value.day09; 92 row[31] = dat.Value.day10; 93 row[32] = Gokei(dat.Value) + "(" + Gokei2(dat.Value) + ")"; 94 95 table.Rows.Add(row); 96 } 97 98 int nn = table.Rows.Count; 99 100 return table; 101 }
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ByoriIItakuForm.aspx.cs" Inherits="WebHoken.ByoriIItakuForm" %> <%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <div class="row"> <div> <p> <asp:TextBox ID="TextBox1" Font-Size="Medium" Width="350" runat="server" Text=""></asp:TextBox> </p> <rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt" WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" Width="1920px" Height="700px"> <localreport reportpath="ReportItakuDoctor2.rdlc"> <DataSources> <rsweb:ReportDataSource DataSourceId="ObjectDataSource2" Name="DataSet1" /> </DataSources> </localreport> </rsweb:ReportViewer> <asp:ObjectDataSource ID="ObjectDataSource2" runat="server" SelectMethod="MakeItak" TypeName="WebHoken.ByoriIItakuForm" OldValuesParameterFormatString="original_{0}"></asp:ObjectDataSource> </div> </div> </form> </body> </html>
ReportItakuDoctor2.rdlc も載せようとしましたが、コードが長くアップロードの失敗しました。
見たい個所があれば教えてください。
また、ASP.NET のバージョンはどこを見ればわかるでしょうか?
教えてください。
ASP.NET のバージョンは確認中です
<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
以下を確認しました。
対象のフレームワークは、「.NET Framework 4.5.2」となっています。
row[0] = "<a href = 'ByoriIitakForm.aspx'>" + dat.Value.DrMei + "</a>";
とした時、
上記のような結果になりました。
また、
row[0] = HttpUtility.HtmlEncode("<a href = 'ByoriIitakForm.aspx'>")+ dat.Value.DrMei + HttpUtility.HtmlEncode("</a>");
の時は、
となりました。