Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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
Javascript Rally App SDK 2.0:筛选商店中的rallymultiobjectpicker_Javascript_Extjs_Rally - Fatal编程技术网

Javascript Rally App SDK 2.0:筛选商店中的rallymultiobjectpicker

Javascript Rally App SDK 2.0:筛选商店中的rallymultiobjectpicker,javascript,extjs,rally,Javascript,Extjs,Rally,我正在尝试使用一个rallymultiobjectpicker(不确定为什么没有一个对象选择器)来提取投资组合项目的列表。但是,我想按“投资组合项目类型”字段过滤结果。我没有幸运地认识到修改后的storeCfg的参数。任何修改似乎都会被忽略,甚至像将“Name”字段的排序从“ASC”更改为“DESC”这样简单的事情 以下是一个基本示例: this.pis = Ext.widget('rallymultiobjectpicker', { items: [{ modelTyp

我正在尝试使用一个rallymultiobjectpicker(不确定为什么没有一个对象选择器)来提取投资组合项目的列表。但是,我想按“投资组合项目类型”字段过滤结果。我没有幸运地认识到修改后的storeCfg的参数。任何修改似乎都会被忽略,甚至像将“Name”字段的排序从“ASC”更改为“DESC”这样简单的事情

以下是一个基本示例:

this.pis = Ext.widget('rallymultiobjectpicker', {
    items: [{
        modelType: 'portfolio item'
    }],
    storeCfg: {
        autoLoad: false,
        fetch: "Name, PortfolioItemType",
        pageSize: 200,
        filters: [
            {
                property: 'PortfolioItemType',
                value: 'Initiative'
            }
        ],
        sorters: [
            {
                property: 'Name',
                direction: 'DESC'
            }
        ],
        remoteGroup: false,
        remoteSort: false,
        remoteFilter: false,
        limit: Infinity
    }
});

在你写问题的时候,我会尽量回答你的问题

多对象选取器的单对象版本为。作为选择任何类型的投资组合项目的旁注,我可能会使用组件。选择器和组合框组件工作良好,除非其中有太多选项。选择器是一种很好的方法,它可以让用户准确地找到他们正在寻找的对象,而无需给他们一个一百万长的列表来查看

此外,PortfolioItemType是一个对象,而不仅仅是一个字符串值。但您可以按其名称进行查询,如下所示

<!DOCTYPE html>

<script type="text/javascript" src="/apps/2.0p/sdk.js"></script>

<script type="text/javascript">
    Rally.onReady(function() {
        Ext.define('CustomApp', {
            extend: 'Rally.app.App',
            componentCls: 'app',

            launch: function() {

                Ext.create('Rally.ui.dialog.ChooserDialog', {
                    artifactTypes: ['portfolioitem'],
                    autoShow: true,
                    listeners: {
                        artifactChosen: function(selectedRecord) {
                            Ext.Msg.alert('Chooser', selectedRecord.get('Name') + ' was chosen');
                        },
                        scope: this
                    },
                    storeConfig : {
                        filters: [
                            {

                                property: 'PortfolioItemType.Name',
                                value: 'Initiative'
                            }
                        ]
                    }
                });
            }
        });

        Rally.launchApp('CustomApp', {
            name: 'Tacos'
        });
    });
</script>

onReady(函数(){
Ext.define('CustomApp'{
扩展:“Rally.app.app”,
组件CLS:“应用程序”,
启动:函数(){
Ext.create('Rally.ui.dialog.ChooserDialog'{
工件类型:['portfolioitem'],
汽车展:是的,
听众:{
ArtifactSelected:函数(selectedRecord){
Ext.Msg.alert('Chooser',selectedRecord.get('Name')+'was selected');
},
范围:本
},
storeConfig:{
过滤器:[
{
属性:“PortfolioItemType.Name”,
价值观:“主动性”
}
]
}
});
}
});
Rally.launchApp('CustomApp'{
名称:“玉米饼”
});
});

这是一个多对象选择器

<!DOCTYPE html>

<script type="text/javascript" src="https://rally1.rallydev.com/apps/2.0p/sdk.js"></script>

<script type="text/javascript">
    Rally.onReady(function() {
        Ext.define('CustomApp', {
            extend: 'Rally.app.App',
            componentCls: 'app',

            launch: function() {
                this.add({
                    xtype: 'rallymultiobjectpicker',
                    modelType: 'portfolioitem',
                    storeConfig : {
                        filters: [
                            {

                                property: 'PortfolioItemType.Name',
                                value: 'Initiative'
                            }
                        ]
                    },
                    listeners:{
                        collapse:function(picker){
                            console.log(picker.getValue());
                        }
                    }
                });
            }
        });

        Rally.launchApp('CustomApp', {
            name: 'Tacos'
        });
    });
</script>

onReady(函数(){
Ext.define('CustomApp'{
扩展:“Rally.app.app”,
组件CLS:“应用程序”,
启动:函数(){
这个。添加({
xtype:“rallymultiobjectpicker”,
模型类型:“portfolioitem”,
storeConfig:{
过滤器:[
{
属性:“PortfolioItemType.Name”,
价值观:“主动性”
}
]
},
听众:{
折叠:函数(选择器){
log(picker.getValue());
}
}
});
}
});
Rally.launchApp('CustomApp'{
名称:“玉米饼”
});
});

我将在您编写问题时尝试解决您的问题

多对象选取器的单对象版本为。作为选择任何类型的投资组合项目的旁注,我可能会使用组件。选择器和组合框组件工作良好,除非其中有太多选项。选择器是一种很好的方法,它可以让用户准确地找到他们正在寻找的对象,而无需给他们一个一百万长的列表来查看

此外,PortfolioItemType是一个对象,而不仅仅是一个字符串值。但您可以按其名称进行查询,如下所示

<!DOCTYPE html>

<script type="text/javascript" src="/apps/2.0p/sdk.js"></script>

<script type="text/javascript">
    Rally.onReady(function() {
        Ext.define('CustomApp', {
            extend: 'Rally.app.App',
            componentCls: 'app',

            launch: function() {

                Ext.create('Rally.ui.dialog.ChooserDialog', {
                    artifactTypes: ['portfolioitem'],
                    autoShow: true,
                    listeners: {
                        artifactChosen: function(selectedRecord) {
                            Ext.Msg.alert('Chooser', selectedRecord.get('Name') + ' was chosen');
                        },
                        scope: this
                    },
                    storeConfig : {
                        filters: [
                            {

                                property: 'PortfolioItemType.Name',
                                value: 'Initiative'
                            }
                        ]
                    }
                });
            }
        });

        Rally.launchApp('CustomApp', {
            name: 'Tacos'
        });
    });
</script>

onReady(函数(){
Ext.define('CustomApp'{
扩展:“Rally.app.app”,
组件CLS:“应用程序”,
启动:函数(){
Ext.create('Rally.ui.dialog.ChooserDialog'{
工件类型:['portfolioitem'],
汽车展:是的,
听众:{
ArtifactSelected:函数(selectedRecord){
Ext.Msg.alert('Chooser',selectedRecord.get('Name')+'was selected');
},
范围:本
},
storeConfig:{
过滤器:[
{
属性:“PortfolioItemType.Name”,
价值观:“主动性”
}
]
}
});
}
});
Rally.launchApp('CustomApp'{
名称:“玉米饼”
});
});

这是一个多对象选择器

<!DOCTYPE html>

<script type="text/javascript" src="https://rally1.rallydev.com/apps/2.0p/sdk.js"></script>

<script type="text/javascript">
    Rally.onReady(function() {
        Ext.define('CustomApp', {
            extend: 'Rally.app.App',
            componentCls: 'app',

            launch: function() {
                this.add({
                    xtype: 'rallymultiobjectpicker',
                    modelType: 'portfolioitem',
                    storeConfig : {
                        filters: [
                            {

                                property: 'PortfolioItemType.Name',
                                value: 'Initiative'
                            }
                        ]
                    },
                    listeners:{
                        collapse:function(picker){
                            console.log(picker.getValue());
                        }
                    }
                });
            }
        });

        Rally.launchApp('CustomApp', {
            name: 'Tacos'
        });
    });
</script>

onReady(函数(){
Ext.define('CustomApp'{
扩展:“Rally.app.app”,
组件CLS:“应用程序”,
启动:函数(){
这个。添加({
xtype:“rallymultiobjectpicker”,
模型类型:“portfolioitem”,
storeConfig:{
过滤器:[
{
属性:“PortfolioItemType.Name”,
价值观:“主动性”
}
]
},
听众:{
折叠:函数(选择器){
log(picker.getValue());
}
}
});
}
});
Rally.launchApp('CustomApp'{
名称:“玉米饼”
});
});

啊,是的。我应该对组合框与multiobjectpicker的关系做出这样的假设。我已经尝试了你的例子,它似乎是有效的,除了它是填充了什么似乎是所有的投资组合项目与T