【问题标题】:How to update enhanced grid with new data如何使用新数据更新增强网格
【发布时间】:2013-11-20 14:37:53
【问题描述】:

我有一个连接到 JSONRest 的增强网格,并在网格启动后填充它。 我对在执行新查询时如何更新 Grid 存储感到困惑,有人可以帮忙吗?

    var store = new JsonRest({
        target: "rest/search"
    }); 

    dataStore = new ObjectStore({ objectStore: store });

            /*set up layout*/
    var layout = [[
       {'name': 'Name', 'field': 'col1', noresize: true, 'width': '100%'},
    ]];

    /*create a new grid:*/
    grid = new EnhancedGrid({
        id: 'grid',
        store: dataStore,
        structure: layout,
        selectable: true,
        selector: false,
        selectionMode: 'none',
        escapeHTMLInData: false,
        autoHeight:true,


        plugins: {
          pagination: {
            pageSizes: ["10", "25", "50"],
            description: true,
            pageStepper: true,
            maxPageStep: 4,  
            defaultPageSize: 5,
            sizeSwitch: true,
            position: 'bottom'
          }
        }
      }, document.createElement('div'));


    grid.setQuery({
        term: "term",
        category: "category"
      });

    grid.startup();

执行 store.query 确实会影响我的后端,但我如何使用结果重新填充网格?

    store.query({term: "newterm", category: "newcategory"},
              {
                start: 10,
                count: 10,
              }).then(function(data){





              });

【问题讨论】:

    标签: dojox.grid.datagrid dojox.grid dojo


    【解决方案1】:

    为了填充网格,您不应该直接执行存储查询 - 您应该指示网格使用存储,它会自行查询。

    您似乎已经在对 DataGrid 构造函数的调用中分配了 store 实例,并且您正确地用 dojo/data/ObjectStore 包装它(因为 dojox 网格不支持 dojo/store),所以我不清楚为什么您甚至试图执行除此之外的查询。致电grid.startup() 后,您应该会看到对您服务的网络请求。

    如果您在创建网格时看到正在发出网络请求,但在网格中没有看到结果,那么您的服务可能实际上并未遵循 dojo/store/JsonRest 所期望的约定。请参阅http://dojotoolkit.org/reference-guide/1.9/quickstart/rest.html,了解有关请求和响应的预期信息。

    如果您实际上是在询问如何让网格在未来某个时候使用不同的商店,请致电 grid.setStore(newstore)

    【讨论】:

    • 嗨,Ken,感谢您的回复...“为了填充网格,您不应该直接执行商店查询 - 您应该指示网格使用商店,它会自己查询。”我认为这就是我在上面的第一个代码块中所做的......当网格启动时,它会调用我的休息服务,成功地传递它需要的参数(使用 grid.setQuery() 方法)......我是什么我正在尝试使用新参数再次调用该服务,并使用这个新调用的结果更新附加到网格的存储,这就是我苦苦挣扎的地方。我该怎么做?
    • 哦,好吧,听起来你想要的是grid.setQuery({ term: "newterm", category: "newcategory" });
    • 嗨,Ken,第二次使用 grid.setQuery 似乎没有调用我的服务器....如果我设置网格并在第一次访问服务器时调用它,但是当我调用它时第二次它没有用我的新标准击中服务器......我难住了!
    • @KenFranqueiro 您答案中提供的链接已过时(已弃用,请阅读文章的第一行)。
    • * 过时 = 过时
    猜你喜欢
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多