質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

1回答

2452閲覧

ReportViewer のデータにリンクを含めたいのですがどのように書いたらいいですか?

byori

総合スコア72

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2020/11/18 02:32

編集2020/11/19 05:49

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>");
の時は、
イメージ説明
となりました。

このようなエラーになり最初から作り直しで行きたいと思います。
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/11/18 06:48 編集

ASP.NET のバージョン, ReportViewer のバージョンを質問欄を編集して追記願います。 .aspx を含めた全体のコードをアップしてください。問題が再現できれば簡単なサンプルコードで結構ですので。
退会済みユーザー

退会済みユーザー

2020/11/19 02:50 編集

ReportViewer のバージョンは 12 とのことですが、それですと印刷やズームが IE でしかできないはずですが、それで良いのですか? > ASP.NET のバージョンは確認中です targetFramework を書いてください。Visual Studio から Property を開くか web.config を見ればわかります。
退会済みユーザー

退会済みユーザー

2020/11/19 02:41

> &lt;a href = &#39;ByoriIitakForm.aspx&#39;&gt; 名前 &lt;/a&gt; エンコードしなければ生の html コード <a href = 'ByoriIitakForm.aspx'> 名前 </a> が出てきそうに見えるのですが、それは試してダメだったということですか? どうなりました?
byori

2020/11/19 03:48

上記の通り、その文字が表示されてしまいます。
退会済みユーザー

退会済みユーザー

2020/11/19 03:57

ReportViewer のバージョンは 12 とのことですが、それですと印刷やズームが IE でしかできないはずですが、それで良いのですか? バージョン 15 であれば Chrome, Edge でも印刷やズームはできます。ただし .NET 4.6 以上が必要とのことですが。 https://docs.microsoft.com/ja-jp/sql/reporting-services/application-integration/integrating-reporting-services-using-reportviewer-controls-get-started?view=sql-server-2017
byori

2020/11/19 05:47

ReportViewer のバージョンの更新で対処したいと思います。 というのも現状のReportViewer のバージョン12に、バージョン 15を上書きし.NET Framework 4.6.1 に更新しては知らせたら、上記のエラーになりました。 ちょっと時間がかかるかもしれませんが、今回の件、バージョンアップで解決とさせていただきたいと思います。
退会済みユーザー

退会済みユーザー

2020/11/19 07:56

> 今回の件、バージョンアップで解決とさせていただきたいと思います。 ReportViewer v15 に変更するので仕切り直しということなら、回答欄にその旨書いて、このスレッドはクローズしてください。
退会済みユーザー

退会済みユーザー

2020/11/20 11:23

> 今回の件、バージョンアップで解決とさせていただきたいと思います。 ReportViewer v15 に変更するので仕切り直しということなら、回答欄にその旨書いて、このスレッドはクローズしてください。
退会済みユーザー

退会済みユーザー

2020/11/29 22:45

ReportViewer v15 に変更するので仕切り直しということなら、回答欄にその旨書いて、このスレッドはクローズしてください。
guest

回答1

0

質問欄に移動しました

投稿2020/11/18 07:27

編集2020/11/19 03:26
byori

総合スコア72

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/11/19 02:30

上記のことは回答欄に書かないで、質問欄を編集して書くようお願いします。そうしてもらわないと当方には通知が来ませんので書いたことが分かりません。(質問を書き直すと質問のコメント欄に書いた人には自動的に通知が行くようになってます) また、回答でないことを回答欄に書くべきではありませ。そういうことをされるとスレッドの内容が訳が分からなくなりますので。回答は削除していただきたいのですが、それができないのであれば、上に書いたことは質問欄に移動し、上の回答欄には「質問欄に移動」とだけ書くなど配慮をお願いします。
byori

2020/11/19 03:26

大変失礼しました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問