获取工具栏列表选项的顺序与显示顺序相同

时间:2017-01-03 19:12:37

标签: javascript dhtmlx

我正在从数据库表中为工具栏上的下拉菜单构建选项,为选项提供与表中索引相同值的id,但是按照选项的描述按字母顺序排序。视觉下拉列表很好地排序,但是当我要求所有选项的列表时,它们按id排序,即getAllListOptions()和forEachListOption()。有没有办法在"右边"中查找选项列表?为了选择说出列表中的第一个选项,除了自己再次排序列表?

要强调的是,当选项按描述排序时,问题是ID不是按升序排列,但是dhtmlx按值按升序排列它们,而不是按名称按顺序排序。 I.E,比如ID为8的选项出现在列表的顶部,内部列表中的第一个选项应该是" 8"不是最小的ID(在我的情况下是2)。

网站是MVC,后端是MS SQL Server,数据结构(如选项列表)通过剃刀脚本作为XML传回。

即。获取选项列表的ajax调用通过业务层传递给DAL,DAL请求按描述排序的对象列表。然后剃刀脚本像这样创建XML

<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查询:

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

3 个答案:

答案 0 :(得分:1)

在浏览dhtmlx工具栏的javascript源代码后,我构建了一个似乎可以做我想要的解决方案。显然,没有公开可视选项的函数,因此只能通过对象上的属性进行访问。

如果其他人遇到同样的问题,我就是这样做的:

//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)));
}

答案 1 :(得分:0)

让数据库对列表进行排序,例如mongoDB的find().sort()

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

您使用的是哪个数据库?

答案 2 :(得分:0)

LINQ OrderBy或SortBy将解决您的问题;)

在操作方法或视图中使用此视图模型(不推荐)

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