2017-01-03 13 views
0

データベーステーブルからツールバーのドロップダウンメニューのオプションをビルドしています。オプションのIDはテーブル内のインデックスと同じ値ですが、アルファベット順オプションの説明によって。視覚的なドロップダウンはうまくソートされていますが、すべてのオプションのリストを尋ねると、id、つまりgetAllListOptions()とforEachListOption()でソートされます。 "正しい"順序でオプションリストを検索して、リストを最初に並べ替える以外の方法がありますか?ツールバーリストのオプションを表示する順序と同じ順序で取得する

強調したいのは、オプションが説明でソートされている場合、IDは昇順ではありませんが、dhtmlxは名前の代わりに値で昇順に並べ替えます。 I.Eでは、IDが8のオプションがリストの先頭に出てくるので、内部リストの最初のオプションは、最小のID(私の場合は2)ではなく8でなければなりません。

ウェブサイトはMVCであり、バックエンドはMS SQL Serverです。オプションリストのようなデータ構造は、XMLとしてrazorスクリプトを介して返されます。

I.E.オプションリストを取得するためのajax呼び出しは、bussinessレイヤーを介してDALに渡されます。DALは、descriptionでソートされたオブジェクトのリストを要求します。

public List<Analysis> GetConfig() 
    { 
     return UnitOfWork.Database.Fetch<Analysis>("SELECT * FROM [Analysis] ORDER BY [Description]"); 
    } 

答えて

1

ためのjavascriptのソースコードを精練した後、 dhtmlxツールバー、私は私が欲しいことをするように見えるソリューションを構築しました。明らかに視覚的なオプションを公開する関数はないので、アクセスするのはオブジェクトの属性だけです。

場合、他の人がここで、同じ問題が発生したが、私がやったことです:

//Get all visible options 
var asList = this.objPull[this.idPrefix + "tbb" + sChart].p_tbody.childNodes; 
//If options exist for Chart set drop-down to first option in list 
if (asList.length > 0) { 
    this.setListOptionSelected("tbb" + sChart, asList[0].idd); 
    this.setItemText("tbb" + sChart,"<strong>{0}</strong>".format(this.GetSelectedItemText("tbb" + sChart))); 
} 
0

データベースがリストをソートしてみましょう、例えば:かみそりスクリプトは、この

<item id="tbbOptions" type="buttonSelect" title="@(Messages.Lookup("Config"))" selected="-1" text="@Messages.Lookup("Config_Select")"> 
    @foreach (Analysis oAnalysis in Model.Analysis) 
    { 
     if (!string.IsNullOrEmpty(oAnalysis.SecondaryField)) 
     { 
      <item type="button" id="@(oAnalysis.ID)" img="blueprint.png" imgdis="blueprint.png" text="@string.Format("{0}", oAnalysis.Description)" /> 
     } 
     else 
     { 
      <item type="button" id="@(oAnalysis.ID)" img="blueprint.png" imgdis="blueprint.png" text="@string.Format("{0}", oAnalysis.Description)" /> 
     } 
    } 
</item> 

SQLクエリのようなXMLを作成しますMongoDBのためのfind().sort():あなたが使用しているDB

https://docs.mongodb.com/getting-started/shell/query/#sort-query-results

+0

は私のOrderBy ID場合 – aggaton

0

LINQのOrderByやSORTBYがあなたの問題を解決します。)

はアクションメソッドや、あなたのビューであなたのビューモデルでこれを使用します(推奨されません)

Model.Analysis.OrderBy(x=>x.ID) 
+0

を疑問視するより多くの情報を追加しました、リストに表示されるオプションは、もはやIDでない記述によって並べ替えられています。これは、表示可能なオプションリストをツールバーオブジェクトの内部_listOptionsリストと同じにしますが、リストオプションをアルファベット順に並べ替えるという私の要求を破ります。内部リストが作成される方法に問題があると思われます。オブジェクトは、ビューまたはビューモデルで作成された順序ではなく、数値IDによって「ハッシュイン」されます。 – aggaton

+0

あなたは説明を\ nameなどでアルファベット順にソートする必要がありますか? 必要なフィールドで注文するだけです。それとも、私はあなたの問題を理解していませんでしたか? – blckt

+0

オプションはすでにデータベースからアルファベット順にソートされていますが、問題はdhtmlx内部でIDによるオプションの注文です。つまり、getAllListOptions()を呼び出すと、リストの最初のオプションはドロップダウンの最初の表示オプションではなく、最低のID。内部表現と視覚的表現の間に不一致があります。 – aggaton

関連する問題