以与显示顺序相同的顺序获取工具栏列表选项
Getting toolbar list options in same order as they are displayed
我正在为来自数据库 table 的工具栏上的下拉菜单构建选项,为选项提供与 table 中的索引相同的值的 ID,但是按字母顺序排列选项的描述。视觉下拉列表很好地排序,但是当我要求所有选项的列表时,它们按 id 排序,即 getAllListOptions() 和 forEachListOption()。有没有办法在 "right" 中查找选项列表以选择列表中的第一个选项,而不是自己再次对列表进行排序?
To emphasize, the problem is ID's are not in ascending order when options are sorted by description, however dhtmlx order them internally in ascending order by value instead of by name as they should.即,假设 ID 为 8 的选项排在列表顶部,内部列表中的第一个选项应该是“8”,而不是最小的 ID(在我的例子中是 2)。
网站是 MVC,后端是 MS SQL 服务器,数据结构(如选项列表)作为 XML 通过 razor 脚本传回。
I.E. 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]");
}
让数据库对列表进行排序,例如find().sort()
对于 mongoDB:
https://docs.mongodb.com/getting-started/shell/query/#sort-query-results
您使用的是哪个数据库?
LINQ OrderBy 或 SortBy 将解决您的问题;)
在您的视图模型的操作方法或视图中使用它(不推荐)
Model.Analysis.OrderBy(x=>x.ID)
在搜索了 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)));
}
我正在为来自数据库 table 的工具栏上的下拉菜单构建选项,为选项提供与 table 中的索引相同的值的 ID,但是按字母顺序排列选项的描述。视觉下拉列表很好地排序,但是当我要求所有选项的列表时,它们按 id 排序,即 getAllListOptions() 和 forEachListOption()。有没有办法在 "right" 中查找选项列表以选择列表中的第一个选项,而不是自己再次对列表进行排序?
To emphasize, the problem is ID's are not in ascending order when options are sorted by description, however dhtmlx order them internally in ascending order by value instead of by name as they should.即,假设 ID 为 8 的选项排在列表顶部,内部列表中的第一个选项应该是“8”,而不是最小的 ID(在我的例子中是 2)。
网站是 MVC,后端是 MS SQL 服务器,数据结构(如选项列表)作为 XML 通过 razor 脚本传回。
I.E. 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]");
}
让数据库对列表进行排序,例如find().sort()
对于 mongoDB:
https://docs.mongodb.com/getting-started/shell/query/#sort-query-results
您使用的是哪个数据库?
LINQ OrderBy 或 SortBy 将解决您的问题;)
在您的视图模型的操作方法或视图中使用它(不推荐)
Model.Analysis.OrderBy(x=>x.ID)
在搜索了 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)));
}