Xpages Dependent Dojo Filtering选择字段不起作用

时间:2014-05-09 18:08:23

标签: dojo xpages xpages-extlib

在我的Xpages表单中,我有两个字段,用户将从@DBLookup中选择值。它们是类别和子类别。

我使用组合框工作了,但后来我发现了Dojo Filtering Select!这是一个非常棒的控件,非常适合我需要做的事情,因为用户想要使用预先输入类型,只有当他们获得他们想要的值时才使用tab。

字段工作正常除了我无法填充第二个字段。它取决于第一个字段的值。

我的代码如下:

    <xp:td>
                    <xp:label id="label3" value="Work Category" style="font-weight:bold"></xp:label>
                </xp:td>
                <xp:td>




                    <xe:djFilteringSelect id="djFilteringSelect2"
                        rendered="true" value="#{document1.workCategory}">
                        <xe:this.defaultValue><![CDATA[""]]></xe:this.defaultValue>
                        <xp:selectItems>
                            <xp:this.value><![CDATA[#{javascript:var db = new Array(@DbName()[0], 'TSCTT.nsf'); 
    @DbColumn(db, "workCategoryView", 1)
    }]]></xp:this.value>
                        </xp:selectItems>
                        <xp:eventHandler event="onChange" submit="true"
                            refreshMode="complete">
                        </xp:eventHandler>
                        <xp:eventHandler event="onBlur" submit="true" refreshMode="complete"></xp:eventHandler>
                        <xp:eventHandler event="onFocus" submit="true"
                            refreshMode="complete">
                        </xp:eventHandler></xe:djFilteringSelect></xp:td>
                <xp:td>
                    <xp:message id="message3" for="workCategory"></xp:message>
                </xp:td>
            </xp:tr>
            <xp:tr>
                <xp:td>
                    <xp:label value="Work Sub Category"
                        id="workSubCategory_Label1" for="workSubCategory1" style="font-weight:bold">
                    </xp:label>
                </xp:td>
                <xp:td>


                    <xe:djFilteringSelect id="djFilteringSelect3"
                        rendered="true" value="#{document1.workSubCategory}">
                        <xe:this.defaultValue><![CDATA[""]]></xe:this.defaultValue>
                        <xp:selectItems>
                            <xp:this.value><![CDATA[#{javascript:var db:NotesDatabase = session.getCurrentDatabase();
    var key:String = document1.getItemValueString("djFilteringSelect2");
    @DbLookup(db,"(DBLookupWorkSubCategoryView)",key,2,"[FAILSILENT]");

    }]]></xp:this.value>
                        </xp:selectItems>
                    </xe:djFilteringSelect></xp:td>
                <td></td>
            </xp:tr>
            <xp:tr>
                <xp:td>

2 个答案:

答案 0 :(得分:1)

您指的是错误的字段名称(djFilteringSelect2而不是workCategory)。

另外,我建议您进行部分刷新而不是完全刷新。

我认为你不需要onBlur和onFocus活动。只需使用onChange事件即可。

<强>更新

此示例有效:

<xe:djFilteringSelect id="djFilteringSelect2" value="#{document1.workCategory}">
    <xe:this.defaultValue><![CDATA[""]]></xe:this.defaultValue>
    <xp:selectItems>
        <xp:this.value><![CDATA[#{javascript:
                @DbColumn("", "workCategoryView", 1)
        }]]></xp:this.value>
    </xp:selectItems>
    <xp:eventHandler event="onChange" submit="true" refreshMode="partial" refreshId="djFilteringSelect3"></xp:eventHandler>
</xe:djFilteringSelect>

<xp:br></xp:br>

<xe:djFilteringSelect id="djFilteringSelect3" value="#{document1.workSubCategory}">
    <xe:this.dojoAttributes>
        <xp:dojoAttribute name="required" value="false"></xp:dojoAttribute>
    </xe:this.dojoAttributes>
    <xp:selectItems>
        <xp:this.value><![CDATA[#{javascript:
            var key:String = document1.getValue("workCategory");
            @DbLookup("","(DBLookupWorkSubCategoryView)",key,2,"[FAILSILENT]");
            }]]></xp:this.value>
    </xp:selectItems>
</xe:djFilteringSelect>

注意我是如何将第1次过滤选择中的值更改为document1.getItemValueString()更改为document1.getValue()。

另请注意,我添加了一个dojoAttribute来告诉第二个过滤选择它不是必需的,因为控件的所需行为导致onchange部分刷新失败而不运行。如果需要过滤选择,您可以改为添加额外的选择项作为默认值(mentioned here)。

答案 1 :(得分:0)

什么不起作用?在typeahead list中使用键盘选择值时,是否发生错误或未调用onChange?

您是否看过我之前关于此问题的答案? Xpages Dependent Field Lookups

用djFilteringSelect替换comboBox应该可以正常工作