FineUI 官方论坛

标题: ext:Grid 做排序时,SelectedRowIndexArray 有BUG [打印本页]

作者: emissary    时间: 2012-5-2 18:48
标题: ext:Grid 做排序时,SelectedRowIndexArray 有BUG
本帖最后由 emissary 于 2012-5-2 18:49 编辑

比如,我不管排序结果,我都要选择第1,2,3行。

//没有分页的。
        protected void DeviceListGrid_OnSort(object sender, ExtAspNet.GridSortEventArgs e)
        {
            BLL.DeviceManage DeviceManage1 = new BLL.DeviceManage();
            DataTable DataTable1 = DeviceManage1.BLL_GetAllManagedComputerInfoWithAreaNameByAreaId(GetCurrentSessionAreaId());
            DataView view1 = DataTable1.DefaultView;
            view1.Sort = String.Format("{0} {1}", e.SortField, e.SortDirection);
            DeviceListGrid.DataSource = view1;
            DeviceListGrid.DataBind();
            DeviceListGrid.SelectedRowIndexArray = null;  //这行代码有没有,结果都是一样的。
          DeviceListGrid.SelectedRowIndexArray = new int[] { 1, 2, 3 };
        }

在点排序时,如果第一下点,那么选择是有效果的。
如图
[attach]385[/attach]

如果再点一次,那么选择就没了。。。

如图

[attach]386[/attach]

下面如果再点排序。选择的又有了,再点又没了。就这样来回循环。


DeviceListGrid.SelectedRowIndexArray = new int[] { 1, 2, 3 };

也就是这句话,会循环失效。




作者: emissary    时间: 2012-5-3 17:25
本帖最后由 emissary 于 2012-5-3 17:27 编辑

解决了。。。
因为在排序的时候,会比较保存的值和新值是不是相等,如果相等,就不再修改属性。

原代码
if (backupValue != GetPropertyHashcode(prop))
{
    AddClientPropertyModifiedInServer(prop);
    AddModifiedProperty(prop);
}

改为:

if (backupValue != GetPropertyHashcode(prop) || "SelectedRowIndexArray" == prop)
{
    AddClientPropertyModifiedInServer(prop);
    AddModifiedProperty(prop);
}


这样改会不会导致其它地方有问题啊???????





作者: sanshi    时间: 2012-5-5 15:39
emissary 发表于 2012-5-3 17:25
解决了。。。
因为在排序的时候,会比较保存的值和新值是不是相等,如果相等,就不再修改属性。

已经修正。

-修正Grid 做排序时SelectedRowIndexArray的BUG(emissary)。

更新的地方:
  1. // 数据重新加载了
  2.             if (dataReloaded)
  3.             {
  4.                 // 如果数据重新加载了,不管选择的行是否有变化,都要重新选中行
  5.                 if (!selectRowsScriptRegistered)
  6.                 {
  7.                     sb.AppendFormat("{0}.x_selectRows();", XID);
  8.                 }

  9.                 // 需要更新模版列的内容,因为HTML重新渲染了
  10.                 PageManager.Instance.AjaxGridClientIDs.Add(ClientID);
  11.             }
复制代码

作者: wx_Hd8JM8cz    时间: 2016-9-22 17:37
sanshi 发表于 2012-5-5 15:39
已经修正。

-修正Grid 做排序时SelectedRowIndexArray的BUG(emissary)。

这代码在哪个文件里啊




欢迎光临 FineUI 官方论坛 (https://fineui.com/bbs/) Powered by Discuz! X3.4