winform 窗体用的GridControl控件,求相关操作属性

冷雪液 2011-11-29 10:32:43
如图所示,我绑定的数据源有两个,一个是 “文件夹” 类型 一个是 “文件”类型

我现在要的是选择多条批量删除,但问题是,编号不同实体类不同,我现在实现的是
如果选择同类型的文件可以批量删除。
我查询填充的时候先填充文件夹 再填充文件。
但是不能防止误操作,我想要的结果就是 如果同时选择了文件夹和文件类型,那么我要给个提示,并且将多选出的其他类型全部丢掉,只选择和第一个选择的类型一样的文件类型。

也就是说 我要么都选择文件 要么都选择文件夹。不能既选文件夹又选文件
...全文
136 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
冷雪液 2011-11-30
  • 打赏
  • 举报
回复

/// <summary>
/// 删除按钮事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void iRemove_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (Program.Confirm("确定彻底删除选中的文件吗?"))
{
foreach (var row in normalView.GetSelectedRows())
{
VPath path = (VPath)normalView.GetRow(row);
if (((VPath)normalView.GetRow(row)).Type == FSType.文件夹) //如果是文件夹,要先删除其中已放入回收站中的文件
{
vfsService.DeleteFolders(new Oid[]{((VFolder)normalView.GetRow(row)).Id});
}
else
{
vfsService.DeleteFiles(new Oid[]{((VFile)normalView.GetRow(row)).Id});
}
}
BindGCV(); //刷新
}
}

阿非 2011-11-29
  • 打赏
  • 举报
回复
你现在怎么获取选择项的
冷雪液 2011-11-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xfxlylove 的回复:]
你这样的解决方案就不好呀,你都显示出来了?客户会认为怎么就不让他同时选择进行删除呢?还是改删除方面的代码吧!你可以判断当前选择中的类型是什么再分别进行不同的删除操作!
[/Quote]

那你知道怎么分组吗? 我得到他所有选择行之后,要分组判断后再操作的话 怎么写
xfxlylove 2011-11-29
  • 打赏
  • 举报
回复
你这样的解决方案就不好呀,你都显示出来了?客户会认为怎么就不让他同时选择进行删除呢?还是改删除方面的代码吧!你可以判断当前选择中的类型是什么再分别进行不同的删除操作!
冷雪液 2011-11-29
  • 打赏
  • 举报
回复

private void normalView_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
{
string type = ((VPath)normalView.GetRow(normalView.GetSelectedRows().Length - 1)).Type.ToString(); //所选中行的最后一行
string type1 = ((VPath)normalView.GetRow(normalView.GetSelectedRows()[0])).Type.ToString(); //所选中行的第一行
if (type != type1) //如果选中的第一行类型和最后一行的类型不同,就刷新界面
{
MessageBox.Show("请选择同类型的文件进行删除!");
BindGCV(); //我现在只能这样做,默认选择第一行。但我想的是 最好将后面不同类型的选择去掉,只要选择到和第一行类型一样的位置就好。希望高手指点
}
}
阿非 2011-11-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mmy1210 的回复:]
引用 4 楼 sandy945 的回复:
你现在怎么获取选择项的


grideView1.GetSelectedRows()
[/Quote]
.GetSelectedRows() 看看有没有GroupBy方法

.GetSelectedRows().GroupBy()
熙风 2011-11-29
  • 打赏
  • 举报
回复
 private void gcList_MouseDown(object sender, MouseEventArgs e)
{
DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo hi = this.gvList.CalcHitInfo(new Point(e.X, e.Y));
_IsHitInRow = hi.InRow;
if (hi.RowHandle < 0)
{
this.gcList.ContextMenuStrip = null;
return;
}
else
{
stockView = (StockView)this.gvList.GetRow(hi.RowHandle);//获取一行为一个实体对象
gcList.ContextMenuStrip = contextMenuStrip1;
}
}

前面加个checkbox 复选框 选择删除

通过sotckView来去相应的值,从而去判断

foreach (sotckView item in StockList)
{
if (item.IsCheck == true)
{
if (item.DeliveryState == "类型")
{
packageIds.Add(item.Packages.id);
}
else
{
FunctionsUI.CreateDialog(" ");
return;
}
}
}
熙风 2011-11-29
  • 打赏
  • 举报
回复
用对象就非常好控制了,,
冷雪液 2011-11-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sandy945 的回复:]
你现在怎么获取选择项的
[/Quote]

grideView1.GetSelectedRows()

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧