找回密码
 立即注册

QQ登录

只需一步,快速开始

nutstore
金牌服务用户   /  发表于:2021-8-25 17:30:11
11#
Richard.Ma 发表于 2021-8-23 12:12
非常抱歉,看了一下目前此问题研发还在验证原因,由于研发同事在美国那边。我今天会邮件再确认一下进度,明 ...

是否能告知最新进度
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-8-25 18:31:02
12#
本帖最后由 Richard.Ma 于 2021-8-26 10:10 编辑

您好,切换数据源然后滚动后未刷新的原因已经确认,是由于virtualOrderDetails.setWindow实际上设置的是老的数据源,而无法对切换后的数据源生效
因此需要将
virtualOrderDetails.setWindow(rng.row,rng.row2);
改为
flexGrid.itemsSource.setWindow(rng.row,rng.row2);

可以参考下面修改后的代码,
https://stackblitz.com/edit/react-e1weyb?file=src/Grid.jsx

  1. import * as wjcCore from '@grapecity/wijmo';
  2. import * as wjcGrid from '@grapecity/wijmo.grid';
  3. import * as wjcOData from '@grapecity/wijmo.odata';
  4. import * as wjGrid from '@grapecity/wijmo.react.grid';
  5. import * as React from 'react';
  6. import { useParams } from 'react-router-dom';

  7. const fieldMap = {
  8.   100: 'Customers',
  9.   2000: 'Order_Details_Extendeds'
  10. };

  11. const Grid = () => {
  12.   const [totalItemCount, setTotalItemCount] = React.useState('');
  13.   const [data, setData] = React.useState(null);
  14.   const [flexGrid, setFlexGrid] = React.useState(null);
  15.   const onFlexGridInitialized = React.useCallback(async flexGrid => {
  16.     setFlexGrid(flexGrid);
  17.     flexGrid.scrollPositionChanged.addHandler(() => {
  18.       let rng = flexGrid.viewRange;
  19.       flexGrid.itemsSource.setWindow(rng.row, rng.row2);
  20.     });
  21.   });
  22.   const { count } = useParams();

  23.   const getData = React.useCallback(() => {
  24.     const virtualOrderDetails = new wjcOData.ODataVirtualCollectionView(
  25.       'https://services.odata.org/Northwind/Northwind.svc',
  26.       fieldMap[count],
  27.       {
  28.         // oDataVersion: 4.0,
  29.         sortOnServer: true,
  30.         filterOnServer: true,
  31.         loaded: (sender, e) => {
  32.           const totalItemCount = wjcCore.format(
  33.             '{totalItemCount:n0} items',
  34.             sender
  35.           );
  36.           setTotalItemCount(totalItemCount);
  37.         }
  38.       }
  39.     );

  40.     setData(virtualOrderDetails);
  41.   }, [count]);

  42.   React.useEffect(() => {
  43.     setData(null);
  44.     void getData();
  45.   }, [getData]);

  46.   return (
  47.     <div className="container-fluid">
  48.       <div className="col-sm-6">
  49.         <h4>ODataVirtualCollectionView</h4>
  50.         <p>{totalItemCount}</p>
  51.         <wjGrid.FlexGrid
  52.           itemsSource={data}
  53.           isReadOnly={true}
  54.           initialized={onFlexGridInitialized}
  55.         />
  56.       </div>
  57.     </div>
  58.   );
  59. };

  60. export default Grid;
复制代码








回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部