Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax 需要网页选择下拉框数据库设计的指导或想法吗_Ajax_Combobox_Dojo_Business Process Management - Fatal编程技术网

Ajax 需要网页选择下拉框数据库设计的指导或想法吗

Ajax 需要网页选择下拉框数据库设计的指导或想法吗,ajax,combobox,dojo,business-process-management,Ajax,Combobox,Dojo,Business Process Management,我正在使用IBM BPM应用程序,它基本上是构建用户交互的网页。我有(dojo)组合选择框,它们从下拉列表中选择选项。这些选项是通过对服务器的ajax调用填充的,该调用基本上返回一个名称/值对或字符串列表。我创建了一个数据库来存储选择,但是我找不到一个好的例子来说明设计一个表来存储这样的值的最佳方法。它适用于不相关的下拉选项。我有“optiongroup”、“optionname”、“optionvalue”列,可以为每个下拉列表存储选项组 我们现在在这个设计中遇到的问题是,当您有3个下拉列表时

我正在使用IBM BPM应用程序,它基本上是构建用户交互的网页。我有(dojo)组合选择框,它们从下拉列表中选择选项。这些选项是通过对服务器的ajax调用填充的,该调用基本上返回一个名称/值对或字符串列表。我创建了一个数据库来存储选择,但是我找不到一个好的例子来说明设计一个表来存储这样的值的最佳方法。它适用于不相关的下拉选项。我有“optiongroup”、“optionname”、“optionvalue”列,可以为每个下拉列表存储选项组

我们现在在这个设计中遇到的问题是,当您有3个下拉列表时会发生什么,每个下拉列表都依赖于以前的选择。选项1从此表中填充,然后当您选择一个值时,它用于查询表中的选项2选项。当添加新选项3时,它开始呈指数增长,因为您还必须为每个选项2添加一行


我还想知道使用数据库是否真的是最好的解决方案,或者我们是否应该以某种方式使用外部文件。我想说的是,这些选项实际上不会经常更改,但我也不想为了添加新选项而重新部署代码或文件。

这听起来像是迭代父子设计的工作。在数据库中,您可以为
parentId
添加一列,该列映射到其父级的
id
。在根节点级别,parentId将等于0。然后,您可以运行递归方法从数据库中导航“树结构”。下面是一个基本的递归方法,它可能提供一些见解

private void myTest(int optionId, List<Option> optionList) {
        OptionAction optionAction = new OptionAction(); // access DAO to retrieve options
        Option option = optionAction.getOption(optionId);
        if (option.getParentId() == 0) {
            return;
        } else {
            optionList.add(option);
            myTest(option.getParentId(), optionList);
        }
    }
private void myTest(int optionId,List optionList){
OptionAction OptionAction=newoptionAction();//访问DAO以检索选项
Option=optionAction.getOption(optionId);
if(option.getParentId()==0){
返回;
}否则{
选项列表。添加(选项);
myTest(option.getParentId(),optionList);
}
}

Logan,前面的答案是一个很好的答案,但要回答您的后续评论/问题:您可以设置parentId列为null,意思是“可以为null”。因此,您可以有一个单独的数据存储来容纳为这两种用途提供服务所需的对象定义。您可以在一个表中完成所有这些操作,使其保持独立和简单。如何编写管理表内容的代码是另一回事,但不应该引起任何大问题。祝你好运:)

如果表设计中没有父/子关系,那该怎么办?表中的大多数“我的”值用于独立的下拉列表。只有少数例外情况具有依赖性。