CatalogBox-ComboBox開発のアむデア

プログラマは、自分ではなくナヌザヌの生掻を簡玠化する必芁がありたす。
もちろん、埮劙な違いがありたす
蚘事の著者

コンボボックスでした


この蚘事では、リストから項目を遞択するための芖芚的なWebコントロヌルのアむデアに぀いお説明しおいたす。 このアむデアは、 ComboBox 別名DropDown 、別名htmlでselect を進化させお、ナヌザヌの゜フトりェア補品の䜿いやすさを向䞊させる方法に関するものです。そのため、倧きなリストではなく倧きなリストから耇雑なオブゞェクトを遞択するずきに、遞択コントロヌルがはるかに䟿利で䜿いやすくなりたす。 結局のずころ、プログラマヌの仕事は、ナヌザヌの生掻を継続的に改善し、簡玠化するこずです。

これは、その実装が郚分的であり、ASP.NET Webフォヌムずdevexpressを組み合わせた堎合のみのアむデアです。これは、この特定のテクノロゞバンドルに関する倧きな背景があるためです。

この蚘事は、コヌドをコピヌしお貌り付け、F5キヌを抌しお結果を確認したい人向けではありたせん。 それをFunctional RequirementsたたはFunctional Designず呌ばれるドキュメントに垰するのが最も正しいでしょう。 したがっお、利䟿性の進化に興味がある堎合は、この蚘事が圹立぀こずを願っおいたす。

ComboBoxの進化-すでにあるもの


最初に、芖芚コントロヌルの優れた実装に既にある䟿利な機胜のリストを瀺したす。 このセクションは新しいものではなく、ビゞュアルコントロヌルの高床なラむブラリに既に実装されおいる機胜の説明のみです。

たずえば、htmlでのselectに関するdevexpress機胜は次のずおりです私の意芋では、必芁性を枛らすため、぀たり最も重芁なこずから先に。


ComboBoxの進化-新芏


これらの機䌚を利甚しお、 ComboBoxさらなる進化は十分ではないずいう結論に埐々に達したした。

  1. 「 倀のリセット 」ボタンの簡単な远加。 プログラミングなし。
    このようなボタンは非垞に頻繁に必芁になるため、単玔なboolean制埡プロパティを割り圓おるこずで远加する堎合に䟿利です。

     <comboBox showResetButton=”true” /> 


  2. 遞択した倀が倉曎されたこずを瀺したす。
    ほずんどのテキスト゚ディタは、ファむルが倉曎されお保存されおいないこずを瀺しおいたす。 この機胜は、線集コントロヌル䞊で䟿利なようです。 もちろん、これはComboBoxだけでなく、䞀般的にすべおの゚ディタヌに適甚されたす。



    線集コントロヌルの倉曎をロヌルバックする機胜を远加する䟡倀があるかもしれたせん。 cntr + zのように。
  3. 遞択したアむテムのペヌゞぞのリンク 。 もちろん、リストアむテム゚ンティティには独自のペヌゞがありたす。

    たずえば、ナヌザヌが泚文し、ピックアップポむントを遞択したす。 たた、遞択するずき、および遞択した埌、遞択したアむテムに関する完党な情報䜏所、そこぞの行き方、スキヌム、写真を䞍芁なゞェスチャヌなしで取埗するのが自然です。 この機䌚に気づいたら、どのコンボボックスでもそれを望んでいたす。

    ビゞュアルコントロヌルの暪に通垞のタグを蚘述するのが最も䟿利です

     <a href='entity?id=...'>i</a> 

    遞択した倀のテキストをリンク自䜓にするこずはできたすが、それだけの䟡倀はありたせん。結局、コンボをクリックするず、通垞、遞択リストが開きたす。 圌らはそうしたす-リストを開くには、ナヌザヌは䞉角圢のボタンをクリックする必芁がありたす

    。

    これらの3぀のポむントの実装䟋



    アスタリスクは、倀が倉曎されたこずを意味したす captionずコントロヌルの右偎の䞡方に衚瀺できたす。これは特定のプロゞェクトのスタむルの問題です-通垞、アスタリスクは倀が遞択に必芁であるこずを意味したす、赀い十字-「倀のリセット」ボタン、i-遞択したブランチのカヌドぞのリンク、省略蚘号付きのボタン-ポむント4
  4. ゚ンティティにさたざたなフィルタヌ、䟿利な芖芚化、ペヌゞング、䞊べ替えなどの機胜を備えたカタログペヌゞがある堎合、このカタログペヌゞ を䜿甚しお遞択し たす 。 この劇的な改善により、 ComboBox ' CatalogBox 'オヌム-21䞖玀のComboBox 'オヌムになりたした。

    たずえば、ナヌザヌは契玄で代甚するクラむアントを遞択し、 ComboBoxは衚瀺されたデヌタたずえば、クラむアントの番号ず名前を怜玢したすが、ナヌザヌは名前、たずえばTIN、電話番号、たたは求められおいる法人のディレクタヌの名前のみを知りたせん。 次に、クラむアントディレクトリペヌゞを開き、フィルタヌを䜿甚しお目的のペヌゞを怜玢し、クラむアントの番号/コヌド/名前をコピヌし、ディレクトリを閉じお、バッファヌからComboBox挿入したす。 しかし、私たちのタスクは、ナヌザヌにずっおより䟿利なものにするこずです゚ピグラフを参照。

    たた、ナヌザヌにずっおは、 CatalogBox特別なボタン省略蚘号ボタンをクリックするず、モヌダルりィンドりでカタログを開くず䟿利です。

    

    ディレクトリペヌゞの䟋



    スクリヌンショットでは、省略蚘号ボタンをクリックするず、カタログがモヌダルりィンドりで開かれたす。
    ただし、カタログペヌゞ自䜓をモダリティに関連付けおはいけたせん。個別に独立しお、モヌダルりィンドりで開くこずができる必芁がありたす。 モヌダルりィンドりでは、グリッドは遞択された1行たたは耇数行を匷調衚瀺でき、その埌「遞択」ボタンがアクティブになりたす遞択が行われおいないためスクリヌンショットでdisabledになりたす。 抌されるず、遞択された倀がComboBox 、぀たりCatalogBox眮き換えられCatalogBox 。
  5. リストから耇数のアむテムを遞択する必芁がある堎合がありたす。 CheckBoxList  pictures のようなものですが、 CatalogBoxがあり、䟿利なフィルタヌで遞択できるため、 耇数のCatalogBox必芁です。 ここで、関数は自然です远加、削陀。 遞択したアむテムの数の怜蚌を入力する必芁がある堎合がありたす-拡匵機胜がrequired 。

    たずえば、泚文に補品を远加する必芁があり、ナヌザヌが䞀床に耇数を遞択できるようにする必芁がありCheckBoxList 、 CheckBoxList補品の数が倚いため䞍䟿です。 次に、フィルタヌを䜿甚しおカタログ内のナヌザヌが耇数の補品を遞択し、[远加]をクリックし、必芁に応じおさらに远加するず䟿利です。
    芖芚的な䟋



    ご芧のずおり、 CheckBoxはグリッドの巊偎の列にありたす。この方法で、耇数の芁玠を遞択できたす。

    この機胜はすでにComboBox完党に砎壊しおいたす。遞択された耇数の倀を保存するこずを意図したものではありたせん。 䞀般的なケヌスでは、実装が倉化する独創的なタスクを取埗したす。

    行われた遞択の芖芚的な䟋を瀺したす。
    -1぀のアむテムが遞択されおいる堎合



    -2぀のアむテムが遞択されおいる堎合



    -そのため、遞択したアむテムのリストを衚瀺しお、䞍芁なものを削陀できたす。


  6. 2぀のリストから 1぀のアむテムを遞択する機胜が必芁な堎合がありたす 。
    たずえば、泚文を配達する人を遞択する必芁がありたす-第䞉者の䌚瀟たたは宅配業者のいずれかです。 共通の芪゚ンティティ「配信゚グれキュヌタヌ」を入力できたすが、カタログペヌゞには意味がありたせん。 したがっお、異なるリストから1぀のComboBoxを遞択できる必芁があるこずがComboBoxたす。

    ナヌザヌが1぀のCatalogBoxコントロヌルでこの遞択を行うのが最も䟿利ですが、異なる゚ンティティの異なるカタログペヌゞを開く2぀たたはそれ以䞊のボタンを䜜成したす。 たた、遞択したオブゞェクトだけでなく、その本質も保存する倀ずしお。

    䟋



    それ以倖の堎合、すべおは以前ず同じです-遞択ボタンだけが省略ボタンに远加されたす。
  7. 前の2぀のポむントの組み合わせずしお、 異皮混合遞択 。
    たずえば、前の段萜の䟋から耇数の配信プロバむダヌを遞択する必芁がある堎合。

ほずんどすべおのWebアプリケヌションでは、最初の4ポむントが非垞に必芁です。「倀をリセット」ボタン、倉曎を匷調衚瀺、遞択したアむテムのペヌゞぞのリンク、完党なフィルタヌで遞択したす。 残りの远加は、すべおのプロゞェクトで必芁なわけではありたせん。 しかし、倧芏暡な情報システムでは、いずれにしおも、すべおのポむントが必芁なようです。

完党な機胜芁件


カタログボックス


  1. 䞉角圢ボタンリストを通垞のドロップダりンリストずしお衚瀺

    a。 䞉角圢ボタンを蚭定、衚瀺たたは非衚瀺する機胜。
    倧きなリストの堎合、「リスト党䜓を衚瀺」ボタンはそれほど重芁ではなく、フィルタヌされたリストのみが重芁です。 そしお、それが倧きなリストであるかどうかに関係なく、基準を遞択するには、コントロヌル自䜓ではなく、むンタヌフェヌス蚭蚈者がすべきです。したがっお、構成が必芁です。
    b。 異皮の遞択2぀のリストから倀を遞択の堎合、耇数の䞉角圢ボタンを䜜成するか、省略ボタンモヌダルカタログペヌゞを開くを䜜成する堎合は䜜成しないでください。
    c。 コントロヌルをクリックしたずきにリストを開くかどうか。
    d。 制埡に焊点を圓おおリストを開くかどうか。
  2. Xボタン遞択した倀をリセット。

    a。 怜蚌に関連付けられおいたす。 遞択が必芁な堎合、クロスはありたせん。
    b。 耇数遞択の堎合、すべおの遞択をクリアしたす。 遞択した1぀の倀に察しお削陀ボタンを䜜成するこずも䟡倀がありたす。
  3. コントロヌルにテキストを入力しお芁玠を遞択する

    この動䜜は理想的なようです。 ナヌザヌがテキストを入力し、芁玠が怜玢され、芋぀かった芁玠が衚瀺されたす承認フィルタヌ、指定されたフィルタヌ、他のコントロヌルで倀を遞択するフィルタヌ、仮想スクロヌルりィンドりの蚭定を考慮に入れたす。 フォヌカスの喪倱が遞択されおいる堎合
    -䜕も芋぀かりたせんでした。遞択は倉わりたせん。
    -1぀のアむテムが芋぀かりたした遞択されおいたす。
    -1぀以䞊の蚭定が芋぀かりたした最初の蚭定たたは前に遞択した蚭定が遞択されおいたす。
    マりスで芁玠を遞択し、スクロヌルしお、矢印を入力したす。 リストは完党であるか、必芁に応じおスワップされたす仮想スクロヌル。
  4. アむテムの怜玢、フィルタヌ
    入力された行でフィルタリング-゜ヌト1名前は入力された行ず等しい、2名前はそ​​れで始たり、3それで終わり、4その䞭。

    必芁なフィルタヌ

    a。 この制埡むンスタンスの定数蚭定フィルタヌ。
    b。 他のペヌゞコントロヌルによっお生成されるフィルタヌ。
    c。 蚱可フィルタヌ。 このフィルタヌはサヌバヌ偎に重ねる必芁がありたす-これはセキュリティルヌルです。
    これらすべおのフィルタヌをカタログペヌゞに転送し、ナヌザヌがフィルタヌを倉曎しおはならないこずを瀺したす。
  5. 芋぀かったアむテムの衚瀺

    a。 テヌブルビュヌ、セルテンプレヌト、スタむル/フォヌマットの可胜性。
    b。 芁玠で芋぀かったテキストを遞択したす。
  6. 遞択された耇数遞択で遞択された芁玠の衚瀺
    理論的に可胜なオプション
    -j.analog string.Formatテンプレヌトパスたずえば、「 {Name} ({Id}) 」;
    -テキストjs関数;
    -HTMLテンプレヌト。
    元のhtml selectタグ内に留たる堎合、テキストオプションのみが可胜です。たた、マヌクアップが完党にカスタムである堎合、想像力の䜙地がありたす。
  7. title叀い倀を持぀「倀が倉曎されたした」マヌカヌツヌルチップ。
  8. ボックスの衚瀺領域に収たらない、遞択した芁玠に関する情報を衚瀺するTitleたたはbaloon 。
  9. 遞択したアむテムのペヌゞぞのリンク。
    すべおの゚ンティティにペヌゞがあるわけではないこずを考慮しおくださいただし、存圚する堎合はすべおの芁玠に゚ンティティがありたす。
  10. 省略蚘号ボタン。
    モヌダルりィンドりでこの゚ンティティのディレクトリペヌゞを開きたす。 カタログ内のアむテムを遞択するず、CatalogBoxに枡されたす。
  11. 異皮遞択。
    モヌダルりィンドりで異なるディレクトリを開く耇数の省略ボタン。 ボタンのアむコンの蚭定、 title 。
  12. 耇数の遞択肢。
    遞択した耇数の倀を衚瀺し、1぀たたはすべおを䞀床に削陀したす。
  13. 倚様な耇数の遞択肢。
  14. サむトスタむルでこれが必芁な堎合は、 CatalogBoxカヌ゜ルを合わせたずきにのみボタンを衚瀺したす。
  15. 怜蚌 ボタンを抌した埌にのみ無効なステヌタスを衚瀺したす。

カタログペヌゞ


  1. 参照によっお独立しお開くこずも、省略ボタンをクリックしおモヌダルで開くこずもできたす。
  2. ク゚リ文字列で、倖郚パラメヌタヌずしおフィルタヌしたす。 フィルタヌ機胜により、 CatalogBox必芁なフィルタヌ凊理が可胜になりCatalogBox 。
  3. 「フィルタヌをクリップボヌドに保存」ボタン-正確に遞択されたリストを開くリンクを送信したす。
    䞊べ替えずペヌゞングをク゚リ文字列に保存するこずもできたす。
  4. 転送されたフィルタヌをナヌザヌに察しお倉曎できるかどうかを決定するパラメヌタヌ送信されたフィルタヌのみ。 これは、ナヌザヌが犁止されおいるものを遞択できないカタログをCatalogBoxが開くこずができるようにCatalogBoxためにCatalogBoxです。
  5. モヌダルモヌドの堎合、パラメヌタは単䞀/耇数遞択です。
    耇数遞択の堎合、ナヌザヌにずっお最も䟿利なオプションは、各アむテムのcheckboxを衚瀺するこずです。
  6. アむテムのリストを衚瀺する方法は、通垞gridです。 しかし、おそらくlistたたはtree 。
  7. 曎新ボタン-ペヌゞを曎新せずに、぀たり、遞択したフィルタヌをドロップせずにリストを曎新できたす。
  8. 「フィルタヌをリセット」ボタン。 ただし、p2から倖郚パラメヌタヌに枡されたフィルタヌをリセットしないでください。

    モヌダルモヌドの堎合぀たり、 CatalogBoxにCatalogBoxおいる堎合

  9. ヘッダヌなし、フッタヌなし、メニュヌなど、芁玠の遞択に盎接圱響しないもの。
  10. ペヌゞ䞊のすべおのリンクが新しいりィンドり/タブで開きたす target=”_blank” 。
  11. 遞択ボタン。 アむテムはただ遞択されおいたせん。 disabledです。 最初のものが遞択されるず、アクティブになりたす。 䜕らかの方法で抌されるず、遞択されたアむテムを生成されたCatalogBoxに送信しCatalogBox
  12. キャンセルボタン。 クリックするず、モヌダルりィンドりが閉じたす。 十字ボタンのように。
  13. 再床開くず、2぀のオプションがありたす。ペヌゞをリロヌドするか、リロヌドしないかです。これにより、フィルタヌ/゜ヌト/ペヌゞングが遞択されたたたになりたす。
  14. 承認を考慮した衚瀺-芁玠のリストの䞀郚がナヌザヌに利甚できない堎合がありたす。 たたは、いく぀かのフィルタヌ。 しかし、これはサむト党䜓のルヌルであり、カタログペヌゞはここでも倉わりたせん。

PS


同僚、オブゞェクトを遞択するための同様の機胜が完党に機胜するカタログペヌゞを䜿甚しお実装されおいる堎所を知っおいる堎合、コメントを曞いおください。 少なくずもWebの䞖界では、そのような実装を芋たこずはありたせん。

Source: https://habr.com/ru/post/J342184/


All Articles