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

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

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

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

Q&A

解決済

1回答

1785閲覧

asp.net mvcでのデータの設定・表示(マウスオーバー)3

sanezane

総合スコア91

C#

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

ASP.NET MVC Framework

ASP.NET MVC Frameworkは、MVCパターンをベースとした、マイクロソフトのウェブアプリケーション開発用のフレームワークです。

0グッド

0クリップ

投稿2018/07/04 06:22

編集2018/07/05 05:10

■期待する動作

オブジェクトにグッズ名称を設定してポップアップで表示させたい。イメージ以下画像。
イメージ説明
現状、No1を指定して表示していますが、No.2,3とユーザー側で変更した際の
制御を実装できないでいます。
No2,3をクリックし、そのオブジェクトに設定している値を取るところまではできていますが、そこからのオブジェクトとの紐付けで詰まってしまっています。

・オブジェクトとデータの構造について
・オブジェクトはSVG要素で作られており、data-title属性をattrにて付与します。
$('#オブジェクト').attr(data-title,グッズ名称)
・以下のようにgoods_meishoを取得、編集したい。
イメージとしてはグッズを管理している大きな棚をroomとしており、その中にある箱をbox、
箱の中には最大2件のgoodsmeishoが入る。2件入っている場合は/で結合。1つの場合はそのまま。無しの場合は空白で出力したい。
・データの格納のイメージと表示のイメージを以下に示します。

情報の整理がついていませんが、お力をお貸しいただけますと幸いです。
環境情報
フレームワーク:Asp.net mvc .NETFramework
データベース:Postgresql
jQueryバージョン情報:3.3.1
OS:windows7
.NET:4.6.2
Visual Studio:visual studio2017
イメージ説明

c#

1・コントローラー 2///<summary> 3 ///グッズ名称取得 4 ///</summary> 5 private IEnumerable<GoodsModel.GoodsMeishoViewModel> GetGoodsName(NpgsqlConnection dataConnector) 6 { 7 List<GoodsModel.GoodsMeishoViewModel> GoodsMeishos = new List<GoodsModel.GoodsMeishoViewModel>(); 8 9 10 //テスト用の値 11 string Type_cd = "A"; 12 int box_tsuban = 1; 13 int goods_tsuban = 1; 14 15 16 string sql = @"select box_tsuban, goods_tsuban, goods_meisho" 17+ " from master.グッズ名称マスタ where Room_cd = :RoomCd and Type_cd = : TypeCd and box_tsuban = :Box_tsuban and goods_tsuban = :Goods_tsuban"; 18 19 NpgsqlCommand cmd = new NpgsqlCommand(sql, dataConnector); 20 cmd.Parameters.Add(new NpgsqlParameter("kikishitsuCd", NpgsqlDbType.Text)); 21 22 cmd.Parameters.Add(new NpgsqlParameter("TypeCd", NpgsqlDbType.Text)); 23 cmd.Parameters.Add(new NpgsqlParameter("Box_tsuban", NpgsqlDbType.Integer)); 24 cmd.Parameters.Add(new NpgsqlParameter("Goods_tsuban", NpgsqlDbType.Integer)); 25 cmd.Prepare(); 26 cmd.Parameters["RoomCd"].Value = Session["RoomCode"].ToString(); 27 cmd.Parameters["TypeCd"].Value = Type_cd; 28 cmd.Parameters["Box_tsuban"].Value = goods_tsuban; 29 cmd.Parameters["Goods_tsuban"].Value = goods_tsuban; 30 31 using (NpgsqlDataReader dr = cmd.ExecuteReader()) 32 { 33 while (dr.Read()) 34 { 35 GoodsMeishos.Add(new GoodsModel.GoodsMeishoViewModel() 36 { 37 boxtsuban = (int)dr["box_tsuban"], 38 goodstsuban = (int)dr["goods_tsuban"], 39 goodsmeisho = dr["goods_meisho"].ToString() 40 41 }); 42 } 43 return GoodsMeishos; 44 } 45

c#

1・Model 2public class GoodsModel : 〇〇ModelBase 3 { 4 ///<summary> 5 ///グッズ名称をセット 6 ///</summary> 7 public IEnumerable<GoodsMeishoViewModel> GoodsMeisho { get; set; } 8 9 public class GoodsMeishoViewModel 10 { 11 //box通番 12 public int boxtsuban { get; set; } 13 14 //グッズ通番 15 public int goodstsuban { get; set; } 16 17 //グッズ名称 18 public string goodsmeisho { get; set; } 19 } 20 21

c#

1・アクション 2 public ActionResult Index() 3 { 4 var model = this.CreateModel<GoodsModel>(); 5 // セッションよりNpgsqlConnectionを取得 6 NpgsqlConnection dataConnector = (NpgsqlConnection)Session["dataConnector"]; 7 8 // DBオープン 9 dataConnector.Open(); 10 11 12 model.GoodsMeisho = GetGoodsName( dataConnector); 13 14 dataConnector.Close(); 15 16 return View(model); 17 18 }

c#

1 var GoodsList = {}; 2 @for(int i = 0; i < Model.GoodsMeisho.Count(); i++ ) 3 { 4 @:GoodsList[@i] = '@Model.GoodsMeisho.ElementAt(i).goodsmeisho'; 5 } 6 7 for (var index in GoodsList) 8 { 9 var num = Number(index) + 1; 10 //グッズ名称オブジェクトのid(P01~...) 11 var id = "#P" + (('00' + (num)).slice(-2)) 12 if (index < 24) { 13 14 $(id).attr('data-title', GoodsList[index]); 15 } 16 $(id + "_PT2").attr('data-title', GoodsList[index]); 17 } 18 //グッズ名称オブジェクト全てに付与しているクラス 19 $('.PA').tipper();

c#

1 2 3 クリックされた値を取得する 4 //各部屋オブジェクトに付与しているclass 5 $('.Rooms').on('click', function (e) { 6 7 8 /* 押下したボタンから部屋番号を取得する */ 9 // ボタンのIDを取得 10 var selectRoom = e.currentTarget.id; 11 // ID情報から架番号を取得 12 13 14 // 取得した架番号をフォーム情報にセット 15 $('#RoomnumSelected').val(paNumber) 16 17 }

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

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

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

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

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

f_horizon

2018/07/05 02:47

ご質問の「No2,3をクリック」とは図のどこをクリックするのでしょうか。またタイトルにあるマウスオーバーではなく、クリックなのでしょうか。
sanezane

2018/07/05 05:14

Noとはroom番号のことを言っています。イメージとしてはroom番号タブがあってroomが切り替わり、それと同時にboxに入っているグッズ名称も変わるといった仕様です。roomの中にboxがあり、boxのなかにgoodsが最大2つ入るという仕様です。クリックでroomが遷移するようタブが設けてあります。boxをマウスオーバーするとその中に入っているgoods名称がポップアップ表示されるという仕様です。
guest

回答1

0

ベストアンサー

カスタム属性(data-xxx)にセットした値をマウスオーバーでヒント表示(ツールチップ)させる、といった挙動でよかったでしょうか。
ツールチップはCSSやjs(jQuery)の細かな挙動が必要となってきますので、下記ご参考下さい。
CSSやJavaScriptでツールチップを表示させる方法まとめ
jQueryでツールチップのプラグインを自作しよう – Part1

また、「jQuery 吹き出し プラグイン」や「ツールチップ プラグイン」で検索すると色々と出てきますので、試されても良いかと思います。ちなみにballoon.jsやTooltipster等使いやすいかと思います。

-- 追記です。
boxも要素としているかと思いますが、であればboxとgoodsは親子関係ということですね。
案1) boxをマウスオーバーした際に、その子要素(goods)を取得し、成形後、ポップアップにツールチップに使用
jQueryで子要素を取得

案2) Modelでデータを生成する際に、boxでポップアップさせるようのデータも生成し、view生成時にboxの属性にセット

投稿2018/07/04 07:22

編集2018/07/05 05:32
f_horizon

総合スコア163

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

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

sanezane

2018/07/05 01:18

プラグインはTipperというプラグインを使用して表示はできているのですが、画像イメージのように編集するロジックが組めていない状況です。 現在は、グッズ名称を1つずつ取り出して、1つずつオブジェクトに付与しているだけになっています。
f_horizon

2018/07/05 05:36

追記いたしました。 Viewでhtmlを記述している部分もあると思いますが、そちらも載せておいた方が使用タグや要素間の関係が分かり易いかと思います。
sanezane

2018/07/06 15:40

ありがとうございます!案2を参考に実装できました!RoomごとにModelのデータを加工し、取得できました。しかし1つ問題がありまして、タブ切り替えでRoom別にModelを切り替えポップアップ表示させる際にデータが変わらないものです。デバッグで確認したところ、属性はちゃんと切り替わっているのですが、どうやらTipperというjQueryプラグインで挙動に問題があるので別の質問にて新たに質問させていただきます。RoomNo.1をのデータを固定で指定してViewから呼び出し、属性にセット、ポップアップ表示は実現できましたのでこの質問に関しましては解決とさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問