XAF 如何实现批量更改多列多行单元格的值

1.功能:可以实现批量更改多列多行多单元格的值

2.选择方式:多列选择和多单元格选择,可以任选其中一个选择方式或两个方式同时用。

实现代码

代码
using System;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Actions;
using DevExpress.ExpressApp.Win.Editors;
using DevExpress.XtraGrid.Views.Grid;
using System.Drawing;
using System.Collections;

namespace MemberLevelSecurityDemo.Module
{
    
public partial class ViewController1 : ViewController
    {
        
public ViewController1()
        {
            InitializeComponent();
            RegisterActions(components);

        }
        
private ArrayList selectedColumns;
        
private GridView gv = null;
        
private void SetCurrentColumnValue_Execute(object sender, ParametrizedActionExecuteEventArgs e)
        {
            
if (e.ParameterCurrentValue == nullreturn;
            gv.ClearSorting();
            
foreach (var col in selectedColumns)
            {
                
for (int i = 0; i < gv.RowCount; i++)
                {
                    gv.SetRowCellValue(i, col.ToString(), e.ParameterCurrentValue);
                }
            }

            DevExpress.XtraGrid.Views.Base.GridCell[] selectedCells 
= gv.GetSelectedCells();
            
foreach (var item in selectedCells)
            {
                gv.SetRowCellValue(item.RowHandle, item.Column, e.ParameterCurrentValue);
            }
            
// Save Changed
            View.ObjectSpace.CommitChanges();
            View.ObjectSpace.Refresh();
        }

        
private void ViewController1_ViewControlsCreated(object sender, EventArgs e)
        {
            gv 
= ((View as ListView).Editor as GridListEditor).GridView;
            gv.OptionsSelection.MultiSelect 
= true;
            gv.OptionsSelection.MultiSelectMode 
= GridMultiSelectMode.CellSelect;
            selectedColumns 
= new ArrayList();
            gv.MouseDown 
+= gv_MouseDown;
        }

        
void gv_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            var view 
= sender as GridView;
            var info 
= view.CalcHitInfo(new Point(e.X, e.Y));
            
if (info.InColumn)
            {
                
if (selectedColumns.IndexOf(info.Column.FieldName, 0, selectedColumns.Count) == -1)
                {
                    info.Column.AppearanceCell.BackColor 
= Color.Gold;
                    selectedColumns.Add(info.Column.FieldName);
                }
                
else
                {
                    selectedColumns.Remove(info.Column.FieldName);
                    info.Column.AppearanceCell.BackColor 
= Color.Transparent;
                }
            }
        }


    }
}
代码
namespace MemberLevelSecurityDemo.Module
{
    
partial class ViewController1
    {
        
/// <summary>
        
/// Required designer variable.
        
/// </summary>
        private System.ComponentModel.IContainer components = null;

        
/// <summary> 
        
/// Clean up any resources being used.
        
/// </summary>
        
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            
if (disposing && (components != null))
            {
                components.Dispose();
            }
            
base.Dispose(disposing);
        }

        
#region Component Designer generated code

        
/// <summary>
        
/// Required method for Designer support - do not modify
        
/// the contents of this method with the code editor.
        
/// </summary>
        private void InitializeComponent()
        {
            
this.components = new System.ComponentModel.Container();
            
this.SetCurrentColumnValue = new DevExpress.ExpressApp.Actions.ParametrizedAction(this.components);
            
// 
            
// SetCurrentColumnValue
            
// 
            this.SetCurrentColumnValue.Caption = "Set Current Column Value";
            
this.SetCurrentColumnValue.ConfirmationMessage = null;
            
this.SetCurrentColumnValue.Id = "SetCurrentColumnValue";
            
this.SetCurrentColumnValue.ImageName = null;
            
this.SetCurrentColumnValue.ShortCaption = null;
            
this.SetCurrentColumnValue.Shortcut = null;
            
this.SetCurrentColumnValue.Tag = null;
            
this.SetCurrentColumnValue.TargetObjectsCriteria = null;
            
this.SetCurrentColumnValue.TargetViewId = null;
            
this.SetCurrentColumnValue.ToolTip = null;
            
this.SetCurrentColumnValue.TypeOfView = null;
            
this.SetCurrentColumnValue.Execute += new DevExpress.ExpressApp.Actions.ParametrizedActionExecuteEventHandler(this.SetCurrentColumnValue_Execute);
            
// 
            
// ViewController1
            
// 
            this.TargetViewType = DevExpress.ExpressApp.ViewType.ListView;
            
this.TypeOfView = typeof(DevExpress.ExpressApp.ListView);
            
this.ViewControlsCreated += new System.EventHandler(this.ViewController1_ViewControlsCreated);

        }

        
#endregion

        
private DevExpress.ExpressApp.Actions.ParametrizedAction SetCurrentColumnValue;
    }
}
 }

 欢迎转载,转载请注明出处:http://www.cnblogs.com/Tonyyang/

原文地址:https://www.cnblogs.com/Tonyyang/p/1923142.html