FineUI 官方论坛

标题: Grid 小建议一条 [打印本页]

作者: 伍_名_氏    时间: 2012-3-30 17:32
标题: Grid 小建议一条
建议:在Grid中,如果启用CheckBox复选框,最好给CheckBox绑定一个数据,比如像DataKeys绑定一个Id一样,
绑定了,就可以根据选中CheckBox的Value去操作,翻页后,也可以很容易的实现批量删除功能
我就是在这样的需求上卡到了,我翻页后,批量选择删除,竟然还是第一页的数据在操作

作者: yfen    时间: 2012-3-30 20:48
if (Grid2.SelectedRowIndexArray != null && Grid2.SelectedRowIndexArray.Length > 0)
                {
                    for (int i = 0, count = Grid2.SelectedRowIndexArray.Length; i < count; i++)
                    {
                        int rowIndex = Grid2.SelectedRowIndexArray[i];
                        if (Grid2.AllowPaging && !Grid2.IsDatabasePaging)
                        {
                            rowIndex = Grid2.PageIndex * Grid2.PageSize + rowIndex;
                        }
                        foreach (object key in Grid2.DataKeys[rowIndex])
                        {
                              delete(Convert.ToString (key));
                        }
                    }

                    ExtAspNet.Alert.ShowInParent("删除成功!");
                }
                else
                {
                    ExtAspNet.Alert.ShowInParent("你没有选择行!");
                }

用这样的代码可以批量删除
作者: 水若寒冰    时间: 2012-3-31 08:46
楼上的解释基本可以满足,需要说的是,有可能你选择了100条要删除的记录,现在删除了50条后网络断了,那么后50条是没法删除的。应该对 foreach (object key in Grid2.DataKeys[rowIndex])
                        {
                              delete(Convert.ToString (key));
                        }
加以改造,先取出所有选中项的key值,之后根据条件做批量删除。
作者: 伍_名_氏    时间: 2012-3-31 09:43
yfen 发表于 2012-3-30 20:48
if (Grid2.SelectedRowIndexArray != null && Grid2.SelectedRowIndexArray.Length > 0)
                { ...

你这样可以,我之前没有判断是否分页,就报错了,唉,我大意了
作者: 大石头    时间: 2012-4-2 09:55
DataKeys保存当前页所有行的键,SelectedRowIndexArray 取得选中的行,两者结合即可。
这跟GridView是一样的




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