繁体   English   中英

按显示顺序获取工具栏列表选项

[英]Getting toolbar list options in same order as they are displayed

我正在为数据库表的工具栏上的下拉菜单构建选项,为选项的ID提供与表中索引相同的值,但是按选项的描述按字母顺序排序。 视觉下拉列表很好地排序,但是当我要求所有选项的列表时,它们按id排序,即getAllListOptions()和forEachListOption()。 除了本人再次对列表进行排序之外,是否有其他方法可以按“正确”的顺序查找选项列表以选择列表中的第一个选项?

要强调的是,问题在于,按选项对选项进行排序时,ID并不是按升序排列,但是dhtmlx在内部按值而不是按名称按升序对它们进行排序。 IE,说ID为8的选项在列表的顶部,内部列表中的第一个选项应为“ 8”,而不是最小的ID(在我的情况下为2)。

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

IE的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]");
    }

在浏览完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)));
}

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

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

您正在使用哪个数据库?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM