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

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

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

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

1782閲覧

bootgridについていくつか聞きたい<検索を全角半角を同じものとして判別できるにしたい(例:「XYZ(全角)」と「XYZ(半角)」) など>

ponchoccho

総合スコア17

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2018/10/05 04:25

編集2018/10/23 01:17

前提・実現したいこと

質問をいくつも同時に聞くのは。
と思う方いると思いますが、ご了承くださいませ。

bootgridについて伺いたいことがあります

まずは下記画像をご覧ください
イメージ説明

上記の画像を元に、以下のことを聞きたいです。

①橙四角の検索を、ローマ字の全角半角での区別も対応したい
(例:「XYZ(全角)」と「XYZ(半角)」、「アイウ(全角)」と「アイウ(半角)」
を同じものとして判別できるようにしたい)
→caseSensitiveをfalseにして、アルファベットの大文字小文字は分けられるようになりましたが、全角半角ができません。

②桃四角の表示を数字以外の文字も打ちたい
→現状、All,10,25,50で設定をしております。
選択する際に、上記のまま出てくるのですが、
「全て表示」「10件表示」「25件表示」のように表示の仕方を変更したいです。

③赤丸を非表示にしたい
→このボタン自体を非表示にしたいと考えております。

④青縦線少しスペースを空けたい
→コードにあるソートの「^」と名称の文言が近いので、スペースをあけたいです。
ただ、編集をすることがあるので、スペースを使用すると編集の際スペースが反映された状態で編集してしまいます。

⑤緑四角の位置を変えたい
この緑四角の位置を、検索の部分の真下もしくは横に移動したいです。

試したこと

調べてみましたが、出てきません。

補足情報(FW/ツールのバージョンなど)

jQueryはタイトルどおり、bootgridを使用しております
visual studio 2017使用
javascriptとaspxを主に使用しております。

※丸投げと思われる方多いかと思いますが、
bootgridのページ(http://www.jquery-bootgrid.com/)を見ても、
調べてみてもよく分かりませんでした。
申し訳ありませんが、助けていただければと思います。

追記(10/23)

自身で作成しているjsの中に

rowCount: [-1, 10, 25, 50],

と打ち、
jquery.boot.jsの536行目に教えていただいた部分を追加しました。
他jquery.boot.jsはいじっておりません。
jsは読み込まれております。
(下記のdisplay:none;は入れる前の作業です)
見た目としては
イメージ説明
上記のようになっております。

actionDropDown
言われたとおり
button内に「style="display: none;"」入れてみましたが、
下記画像のようになりました。

「○件中○~○件を表示しています」無事に上に出ました、ありがとうございます。
ただ、
pagination
はfooterに置いておいたままが良いので、footerに移動させていただきました。
cssも、下記.aspx内にtext-alignしました。

そうしたら、下記画像のようになりました。

  1. 5)画像

イメージ説明

ソースとしては以下になります

javascript

1$("#grid-command-buttons").bootgrid({ 2 rowCount: [-1, 10, 25, 50], 3 caseSensitive: false, 4 templates: { 5 actionDropDown: "<div class=\"{{css.dropDownMenu}}\"> 6 <button style=\"display: none;\" class=\"btn btn-default 7 dropdown-toggle\" type=\"button\" data-toggle=\"dropdown\"> 8 <span class=\"{{css.dropDownMenuText}}\">{{ctx.content}}</span> 9 <span class=\"caret\"></span> 10 </button> 11 <ul class=\"{{css.dropDownMenuItems}}\" role=\"menu\"> 12 </ul> 13 </div>", 14 footer: "<div id=\"{{ctx.id}}\" class=\"{{css.footer}}\"> 15 <div class=\"row\"> 16 <div class=\"col-sm-6\"> 17 <p class=\"{{css.pagination}}\"></p> 18 </div> 19 </div> 20 </div>", 21 header: "<div id=\"{{ctx.id}}\" class=\"{{css.header}}\"> 22 <div class=\"row\"> 23 <div class=\"col-sm-12 actionBar\"> 24 <p class=\"{{css.search}}\"></p> 25 <p class=\"{{css.actions}}\"></p> 26 </div> 27 </div> 28 <div class=\"row\"> 29 <div class=\"col-sm-6 infoBar\"> 30 <p class=\"{{css.infos}}\"></p> 31 </div> 32 </div> 33 </div>", 34 headerCell: "<th data-column-id=\"{{ctx.column.id}}\" class=\"{{ctx.css}}\" style=\"{{ctx.style}}\"> 35 <a href=\"javascript:void(0);\" class=\"{{css.columnHeaderAnchor}} {{ctx.sortable}}\"> 36 <span class=\"{{css.columnHeaderText}}\">{{ctx.column.text}}</span>{{ctx.icon}}</a> 37 </th>" 38 }, 39 labels: { 40 all: "全て表示", 41 infos: "{{ctx.total}}件中 {{ctx.start}} ~ {{ctx.end}}件を表示しています", 42 loading: "検索中...", 43 noResults: "データがありません", 44 search: "検索" 45 }, 46 formatters: { 47 "commands": function (column, row) { 48 return "<button type=\"button\" class=\"btn btn-xl btn-default command-edit\" data-row-id=\"" + row.id + "\"> 49 <span>編集</span> 50 </button> " 51 + 52 "<button type=\"button\" class=\"btn btn-xl btn-default command-delete\" data-row-id=\"" + row.id + "\"> 53 <span>削除</span> 54 </button>"; 55 } 56 } 57})

※templatesとformatters、改行しておりますが、実際は1行にまとめています

javascript

1//jquery.boot.js 2 3//531行目~ 4function renderRowCountSelection(actions) 5{ 6 //536行目 7 function getText(value) 8 { 9 return (value === -1) ? that.options.labels.all : value + "件表示"; 10 } 11} 12 13//1235,1236行 14css: { 15 footer: "bootgrid-footer container-fluid", 16 header: "bootgrid-header container-fluid", 17}

aspx

1 2.bootgrid-header .infoBar{ 3 text-align: right; 4} 5 6.bootgrid-header.container-fluid { 7 text-align: right; 8}

何度も申し訳ありません…。

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

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

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

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

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

miyakichi

2018/10/06 04:24

あれ?検索時 caseSensitive:true(デフォルト値) で「大文字・小文字の区別」、「全角・半角の区別」つきませんか?
ponchoccho

2018/10/06 10:20

http://www.jquery-bootgrid.com/documentation 上記ページでは caseSensitive 「Defines whether the search is case sensitive or insensitive. Default value is true.」 訳すると 「検索で大文字と小文字を区別するかどうかを定義します。 デフォルト値はtrueです。」 とあり、trueだと区別するものだと思い、falseにしていました。 実際に、true(もしくは何もしていない状況)だと大文字小文字区別して検索していましたが、 falseに変更したら大文字と小文字は区別しなくなりました。
miyakichi

2018/10/07 05:19

jquery.bootgrid.js は caseSensitive trueで new RegExp("入力した検索文字列","g")、false で new RegExp("入力した検索文字列","gi") として、search() メソッドでマッチしているか見ているので、大文字・小文字を区別してヒットさせる場合は、caseSensitive を true、区別しないでヒットさせる場合は、caseSensitive を false にします。全角文字は caseSensitive の値に関わらず、区別してヒットすると思いますが?例)検索対象文字列が「XYZ」(全角)で、入力した検索文字列が「XYZ」(半角)ならヒットしません。もし、全角・半角を区別せずにヒットさせたいなら、jquery.bootgrid.js に手を加えるしかないと思います。
ponchoccho

2018/10/08 23:39

申し訳ありません。全くの言葉足らずでした。 例)の「全角・半角を区別せずにヒットさせたい」が言いたかったことでした。 やはりjquery.bootgrid.jsに手を加えるしかないんですね…。
guest

回答2

0

ベストアンサー

コメント欄だとソースが見づらいので改めて新規回答で投げます。なんかスレッド汚しちゃうみたいですみません。

これは本当にわかんないですね……手元で動いてしまっているのでなおさら。
理屈としては553行目付近、

$.each(rowCountList, function (index, value) { var item = $(tpl.actionDropDownItem.resolve(getParams.call(that, { text: getText(value), action: value }))) ._bgSelectAria(value === that.rowCount) .on("click" + namespace, menuItemSelector, function (e) { e.preventDefault(); var $this = $(this), newRowCount = $this.data("action"); if (newRowCount !== that.rowCount) { // todo: sophisticated solution needed for calculating which page is selected that.current = 1; // that.rowCount === -1 ---> All that.rowCount = newRowCount; $this.parents(menuItemsSelector).children().each(function () { var $item = $(this), currentRowCount = $item.find(menuItemSelector).data("action"); $item._bgSelectAria(currentRowCount === newRowCount); }); $this.parents(menuSelector).find(menuTextSelector).text(getText(newRowCount)); // ←ココ! loadData.call(that); } }); dropDown.find(menuItemsSelector).append(item); });

のところでそのドロップダウンを組み立てているはずなんですよ。
newRowCountが-1ならば全て表示、そうでなければvalue+"件表示"を戻すようにしてやれば動くはずなんですよね……🤔

ごめんなさいソース見落としてました。button内のdisplay:noneは解除してください。
364行目の

renderColumnSelection.call(this, actions);

をコメントアウトすると右のアレだけ消えると思います。
角丸とかの調整は別途必要になりますが……。

たぶん「16件中1〜16件を表示しています」を右に移したいという意味だと推測しますが、1365行目付近のinfoBarがあるdiv(ソース内検索で見つかると思います)にpull-rightを入れてみてください。

(略)<div class=\"col-sm-6 infoBar pull-right text-right\">(略)

※text-rightはtext-align:rightなので記載済みだと思います。

投稿2018/10/23 01:51

perpouh

総合スコア299

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

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

ponchoccho

2018/10/23 03:16

申し訳ございません。 キャッシュしていたつもりだったのが、上手くキャッシュできておりませんでした…。 キャッシュしたら、文字化けはしていましたが表示されました、ありがとうございます! (aspxはUTF-8にしています) 残りのも無事やりたいように出来ました! 本当にありがとうございました!!
perpouh

2018/10/23 03:19

よかった!お疲れ様です!:thumbs_up:
guest

0

全角半角については「入力時は必ず半角とする」「検索時は入力された文字を強制的に半角に変換する」のふたつで表面上同じような挙動が実装できるのでは?と思います。データありきであれば使えない手段ですが。
https://qiita.com/yamikoo@github/items/5dbcc77b267a549bdbae

3, 4, 5についてはCSSでなんとかなると思うんでCSSでなんとかしましょう。
3)display:noneなど
4)padding-leftなど
5)はちょっとDOM見ないとわかりません

2について。
「すべて表示」は

$("#grid").bootgrid({ labels: { all: "すべて" } });

でいけるっぽいですが、ほかのn件の分はパラメータだとできないのかもしれません。
ただ、ソースに手を入れるのもべつに難しい話ではなくて、jquery.bootgrid.jsの536行目のあたりを

function getText(value) { return (value === -1) ? that.options.labels.all : value+"件表示"; }

ってしたらたぶんご期待に沿う動きになるんじゃないかなあと思います。

投稿2018/10/22 06:57

perpouh

総合スコア299

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

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

ponchoccho

2018/10/22 08:49

回答ありがとうございます。 1) データありきで使用しているのでその手段は出来ないですね…。 2) jquery.bootgrid.jsの536行目に「+"件表示"」を追加しても表示しませんでした(キャッシュは変えてます) 3) 桃四角まで消えてしまいました…。 今回、 ```JavaScript templates: { actionButton: "<button class=\"btn btn-default\" type=\"button\" title=\"{{ctx.text}}\">{{ctx.content}}</button>", actionDropDown: "<div class=\"{{css.dropDownMenu}}\"><button class=\"btn btn-default dropdown-toggle\" type=\"button\" data-toggle=\"dropdown\"><span class=\"{{css.dropDownMenuText}}\">{{ctx.content}}</span> <span class=\"caret\"></span></button><ul class=\"{{css.dropDownMenuItems}}\" role=\"menu\"></ul></div>", actionDropDownItem: "<li><a data-action=\"{{ctx.action}}\" class=\"{{css.dropDownItem}} {{css.dropDownItemButton}}\">{{ctx.text}}</a></li>", actionDropDownCheckboxItem: "<li><label class=\"{{css.dropDownItem}}\"><input name=\"{{ctx.name}}\" type=\"checkbox\" value=\"1\" class=\"{{css.dropDownItemCheckbox}}\" {{ctx.checked}} /> {{ctx.label}}</label></li>", actions: "<div class=\"{{css.actions}}\"></div>" },] ``` の部分を修正しているのですが、 「actions」 のdiv内に入れるとどちらも消えます。 「actionDropDownCheckboxItem」 の<li>内に入れると、赤丸部分は残り、ドロップダウンの部分が消えてしまいます。 4) padding-leftでいけました、ありがとうございます。 5) 申し訳ございません、DOMはどこまでお見せすれば大丈夫なのでしょうか…?   DOMというものが、調べてみてもどういうものかがよく分かりませんでした。(https://eng-entrance.com/what-is-dom)
perpouh

2018/10/22 09:53

1)そうですか……見た感じこれスペースでの検索語分割すら無いっぽいのでかなり改造しないと無理かもしれませんね。 2)あれ、手元だとそれで動いたのですけど。3が反映されてるってことはjs読み込まれてるってことですよね?エラーも出てませんか? 3)消したいのはactionDropdown内の<button>だと思います。 5)あ、DOMは確認しました。大丈夫です。1365行目を以下のように書き換えてください。右揃えとかはCSSでtext-align指定すれば大丈夫です ``` header: "<div id=\"{{ctx.id}}\" class=\"{{css.header}}\"><div class=\"row\"><div class=\"col-sm-12 actionBar\"><p class=\"{{css.search}}\"></p><p class=\"{{css.actions}}\"></p></div></div><div class=\"row\"><div class=\"col-sm-6\"><p class=\"{{css.pagination}}\"></p></div><div class=\"col-sm-6 infoBar\"><p class=\"{{css.infos}}\"></p></div></div></div>", headerCell: "<th data-column-id=\"{{ctx.column.id}}\" class=\"{{ctx.css}}\" style=\"{{ctx.style}}\"><a href=\"javascript:void(0);\" class=\"{{css.columnHeaderAnchor}} {{ctx.sortable}}\"><span class=\"{{css.columnHeaderText}}\">{{ctx.column.text}}</span>{{ctx.icon}}</a></th>", ```
ponchoccho

2018/10/23 01:16

試してみたのですが、まだ不明なところがありましたので、 質問内容の部分にソースと画像を追記させていただきました。 申し訳ございませんが、再度見ていただけますと幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問