[英]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.