FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 5921|回复: 3
打印 上一主题 下一主题

ext:Grid 做排序时,SelectedRowIndexArray 有BUG

[复制链接]
跳转到指定楼层
楼主
发表于 2012-5-2 18:48:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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 };
        }

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


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

如图



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


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

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



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
沙发
 楼主| 发表于 2012-5-3 17:25:44 | 只看该作者
本帖最后由 emissary 于 2012-5-3 17:27 编辑

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

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

改为:

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


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




板凳
发表于 2012-5-5 15:39:41 | 只看该作者
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.             }
复制代码
地板
发表于 2016-9-22 17:37:53 | 只看该作者
sanshi 发表于 2012-5-5 15:39
已经修正。

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

这代码在哪个文件里啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-24 08:58 , Processed in 0.046735 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表