当前位置:   article > 正文

vue3 vxe-grid修改currentPage,查询数据的时候,从第一页开始查询

vue3 vxe-grid修改currentPage,查询数据的时候,从第一页开始查询

1、当我们设置好VxeGrid.Options进行数据查询的时候,下面是可能的设置:

  1. const gridOptions = reactive<BasicTableProps>({
  2. id: 'UserTable',
  3. showHeaderOverflow: false,
  4. showOverflow: true,
  5. keepSource: true,
  6. columns: userColumns,
  7. size: 'small',
  8. pagerConfig: {
  9. currentPage: 1,
  10. pageSize: 100,
  11. pageSizes: [10, 20, 50, 100, 200, 500, 1000],
  12. },
  13. toolbarConfig: {
  14. slots: { buttons: 'toolbar_buttons' },
  15. refresh: false,
  16. import: false,
  17. print: false,
  18. zoom: false,
  19. export: false,
  20. custom: false,
  21. },
  22. proxyConfig: {
  23. props: {
  24. // 对应响应结果 Promise<{ result: [], page: { total: 100 } }>
  25. result: 'items', // 配置响应结果列表字段
  26. total: 'total', // 配置响应结果总页数字段
  27. },
  28. ajax: {
  29. query: async ({ page, form }) => {
  30. return getUserList({
  31. page: page.currentPage,
  32. pageSize: page.pageSize,
  33. fieldname: searchForm.fieldname,
  34. fieldreq: searchForm.fieldreq,
  35. fieldvalue: searchForm.fieldvalue,
  36. });
  37. },
  38. },
  39. },
  40. })

2、然后我们点击下一页,或者切到到另一页的时候,再次查询的时候会发现没有数据:

其实是有数据的,然后我们在查询的时候,取得是最后一次的pager页码,比如说3,然后查询的时候,可能只有一条数据,所以就显示不出来了。

3、我们查询之前,一定要将页码重新设置为1,这样就可以了:

如果直接这样赋值,就会提示不可以赋值。

其中的代码片段:

  1. <VxeGrid ref="tableRef" v-bind="gridOptions" @cell-click="handleCellClick" class="ml-2 mr-2">
  2. <template #xzbhSlots="{ row }"
  3. ><div class="underline cursor-pointer text-blue-400" @click="xzbhClick(row)">
  4. {{ row.xzbh }}</div
  5. >
  6. </template>
  7. <template #toolbar_buttons>
  8. <div class="flex items-center justify-between ml-2 mr-2 w-[99%]">
  9. <Space>
  10. <VxeSelect
  11. v-model:modelValue="searchForm.fieldname"
  12. style="width: 150px"
  13. placeholder="==默认所有列=="
  14. @change="fieldnamelistChange"
  15. >
  16. <vxe-option
  17. v-for="(item, index) in searchForm.fieldnamelist"
  18. :key="index"
  19. :value="item.value"
  20. :label="item.label"
  21. />
  22. </VxeSelect>
  23. ...
  24. </template>
  25. </VxeGrid>

4、最后我们通过这样处理即可:

  1. function onSearch() {
  2. const $grid = tableRef.value;
  3. if ($grid) {
  4. const proxyInfo = $grid.getProxyInfo();
  5. if (proxyInfo) {
  6. proxyInfo.pager.currentPage = 1;
  7. $grid.clearCurrentRow();
  8. $grid.clearFilter();
  9. $grid.clearCheckboxRow();
  10. $grid.commitProxy('query');
  11. }
  12. }
  13. }

通过上面的代码,就可以了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/872783
推荐阅读
相关标签
  

闽ICP备14008679号