extjs 的gridPanel通过JsonStore取不到值

2019-03-25 13:50|来源: 网路

这是显示部分
var store=new Ext.data.JsonStore({
              
    proxy: new Ext.data.HttpProxy({
     url: 'getUserData.jsp'
    }),
   
    //url:'http://design/getUserData.jsp',

    reader: new Ext.data.JsonReader(
     {fields:['username','usergroup']}
    )
               /* fields:[
                    {name:'username'},
                    {name:'usergroup'}]
               */
            });

            store.load();
         

            var gridPanel=new Ext.grid.GridPanel({
                store:store,
                columns:[
                    /*{
                        header:'用户ID',
                        dataIndex:'id',
                        width:100
                    },*/
                    {
                        header:'用户名',
                        dataIndex:'username',
                        width:160
                    },{
                        header:'用户组',
                        dataIndex:'usergroup',
                        width:160
                    }],
                viewConfig:{
                    sortAscText:'正序排列',
                    sortDescText:'逆序排列',
                    forceFit:true
                },
                width:600,
                height:400,

                frame:true,
                //title:'Framed with Checkbox Selection and Horizontal Scrolling',
                iconCls:'icon-grid'
            });
下面是数据,读取的页面的内容没有html,head和body标签,只有
[
{"username":"aaa","usergroup":"bbb"},
{"username":"bbb","usergroup":"111"}
]

我试过直接在store用data属性直接给值,显示正常,但是一旦到网页去取,就取不到值
现在死活拿不到值,试过很多方法了

问题补充:自己后来又试了试,偶然试出来了,JsonReader,HttpProxy好像不用也行,最后,拿到值的代码为
            var store=new Ext.data.JsonStore({
url:'getUserData.jsp',
fields:['id','username','usergroup']
            });
            store.load();
其他都没动,最初试的时候可能将数据页面中的双引号写成了单引号(因为在extjs里,属性的单双引号是通用的,我以为这里也一样,就没注意),可能是这里出的问题吧。

相关问答

更多
  • 这就是我如何解决这个问题: 在复选框列旁边放置一个带有两个按钮的actioncolumn 。 给actioncolumn一个固定的宽度。 为两个项目(按钮)设置自定义样式,如选定的节目。 使用css设置按钮样式以仅显示所选行。 columns: [{ xtype: 'actioncolumn', width: 40, items: [{ iconCls: 'onselect-show', ... CSS: .onselect-show {display: none; ...
  • 如果你找不到合适的配置选项,事后调用gridPanel.getTopToolbar().hide()应该可以做到。 If you can't find a suitable config option, calling gridPanel.getTopToolbar().hide() afterwards should do the trick.
  • 你拥有处理器参数所需的全部内容 handler: function(grid, rowIndex, colIndex) { var row = grid.getStore().getAt(rowIndex); console.log(row); } 上面的代码会给你一行,所以你只需要选择所需的单元格。 如果您在点击操作列之前强制选择,您也可以使用下面的代码。 但是请注意,默认情况下,单击动作列不会触发选择,因此在单击动作列时可以选择完全 ...
  • getValue()方法有点棘手,它返回的对象具有取决于结果集的可变结构,导致代码中的问题。 但是, getChecked()方法更直接,我将在解决方案中使用它。 然后,我们使用filterBy,因为在这种情况下它更有用。 在这里你有解决方案(内嵌评论): change: { fn: function () { var checkedBoxes = this.getChecked(), //Array of checked checkboxes selecte ...
  • 用这个: grid.on('rowclick', function(grid, rowIndex, columnIndex, e) { console.log(grid, rowIndex, columnIndex, e); }, this); 编辑:有关网格相关问题,请参阅ExtJS网格常见问题部分 Use this: grid.on('rowclick', function(grid, rowInd ...
  • Ext通过textfield配置内置验证(例如allowBlank: false )和其他验证器函数(所有VTypes函数),以及用于提供自定义验证的钩子。 不知道为什么你需要为此添加jQuery,也许你可以更具体一些? 但假设您确实需要同时使用两者,您应该能够使用Ext或jQuery的DOM就绪函数作为入口点(而不是两者),然后在其中编写所需的任何代码,假设两个库都已正确引用和初始化。 假设每个库的DOM就绪函数都像宣传的那样工作,那么当调用任何一个DOM时,DOM应该是可用的,这无论如何都是使用这些方法 ...
  • 由于ExtJS 4.1.3不再返回GridView您必须解决此问题。 看看: Sencha论坛 - >获取gridview行元素 在我看来,它是一个丑陋的解决方案,但它没有得到很多关注.. Since ExtJS 4.1.3 no longer returns a GridView you have to work around this. Take a look at: Sencha Forum --> Getting gridview row element In my opinion its a ug ...
  • 我在商店加载方面遇到了同样的问题。 为了解决这个问题,我用Ext.data.Store替换了Ext.data.JsonStore。 其他参数是相同的。 所以这是我自动加载的ExtJS商店的例子: this.datesStore = new Ext.data.Store({ id: 'datestore', root: 'dates', autoLoad: true, ...
  • ExtJS商店只是一组数据。 没有限制设置,除非它有自定义检查... 你用的是什么版本? 内容是通过服务器保存/获取的吗? 也许限制是在那里实施的? 你能告诉我们一些代码吗? 您可以通过在stores add方法中设置断点来尝试调试。 (他到那儿了吗?检查堆栈痕迹......) The ExtJS store is just a collection of data. There is no limit set unless it has a custom check... What version are ...
  • 当存储的load事件被触发时,从JSON响应创建的JavaScript对象在yourStore.reader.jsonData可用。 例如: yourStore.on('load', function(firstStore) { var data = firstStore.reader.jsonData; otherStore.loadData(data); thirdStore.loadData(data); } 编辑:澄清,每个商店将需要一个单独的root属性(你已经在做),所以他们 ...