本帖最后由 mmy1210 于 2011-11-29 10:33:41 编辑

解决方案 »

  1.   


      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();   //我现在只能这样做,默认选择第一行。但我想的是 最好将后面不同类型的选择去掉,只要选择到和第一行类型一样的位置就好。希望高手指点
                }
            }
      

  2.   

     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;
                            }
                        }                  
                    }
      

  3.   

    .GetSelectedRows() 看看有没有GroupBy方法.GetSelectedRows().GroupBy()
      

  4.   


       /// <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();  //刷新
                }
            }