GridControl

基本设置

https://blog.csdn.net/fangyu723/article/details/129987808
gridView1.OptionsView.ShowGroupPanel = false;//隐藏
gridView1.OptionsView.ShowIndicator = false;// 最左边空白列
gridView1.OptionsSelection.EnableAppearanceFocusedRow = true;
gridView1.OptionsBehavior.Editable = false;//设置列的数据不能编辑
gridView1.OptionsSelection.EnableAppearanceFocusedCell = false;//选中列的颜色跟着改变
gridView1.OptionsView.EnableAppearanceEvenRow = true;//偶数行颜色变化
gridView1.Appearance.EvenRow.BackColor = System.Drawing.Color.AliceBlue;//偶数行颜色设置
gridView1.OptionsView.AllowHtmlDrawGroups = true;
gridView1.PopulateColumns();

傻瓜式操作

var lis = new List<T_StationAddress>();
gcStationAddress.DataSource = bindinglis;
//对bindinglis做各种操作
//做完之后再执行:gcStationAddress.DataSource = bindinglis;

数据绑定模式

普通的DataSoure绑定

public Form1
{
   BindingList<T_StationAddress> StationAddress = new BindingList<T_StationAddress>();
   gcStationAddress.DataSource = StationAddress;
   //可简单写为
   gcStationAddress.DataSource = new BindingList<T_StationAddress>();
}
private void Operation_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
{
    switch (e.Button.Caption)
    {
        case "删除": gridView2.DeleteSelectedRows(); break;
        case "新增": gridView2.AddNewRow(); break;
        case "保存": var i=gridView2.DataSource; break;
    }
}

注意点,DataSource必须绑定BindingList,表格才可以编辑

BindingList和List的转换关系

//List转Binding,需要将List传入构造函数中
gcStationAddress.DataSource =new BindingList<T_StationAddress>(new List<T_StationAddress>());
//Binding转List,有现成的扩展方法
List<T_StationAddress> lis = new BindingList<T_StationAddress>().ToList();

MVVM模式

MVVM

public class GirdView
{
    private void InitialBinding()
    {
        var fluentApi = mvvmContext1.OfType<GridViewModel>();
        fluentApi.SetBinding(gridControl1, x => x.DataSource, y => y.GridDatas);
        // 仅限绑定DataTable有用
        fluentApi.SetTrigger(x => x.TableColunm, d =>
        {
            gridView1.Columns.Clear();
            foreach (var item in d)
            {
                var col = new DevExpress.XtraGrid.Columns.GridColumn();
                col.Caption = item.Key;
                col.FieldName = item.Key;
                col.Name = item.Key;
                col.Visible = true;
                this.gridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { col });
            }
            // 刷新数据
            gridControl1.RefreshDataSource();
        });
    }
}
public class GridViewModel
{
    // 想要动态添加列,要用DataTable
    public DataTable GridDatas { get; set; } = new DataTable();
    // 能够自动通知集合内部的单个属性的更改
    public BindingList<Entity> GridDatas { get; set; }= new BindingList<Entity>();
    // 只通知集合级别的变更,不自动通知项目属性的更改。
    public ObservableCollection<Entity> GridDatas { get; set; }= new ObservableCollection<Entity>();
    //当出现需要动态修改表格列的时候可以用该方法
    private void ConvertListToDataTable(List<Dictionary<string, string>> content)
    {
        GridDatas.Columns.Clear();
        GridDatas.Clear();

        var ct = content.FirstOrDefault();
        var ctName = ct.Select(k => k.Key).ToList();

        foreach (var item in ctName)
        {
            GridDatas.Columns.Add(item, typeof(string));
        }
        foreach (var row in content)
        {
            var ctValue = row.Select(k => k.Value).ToList();
            object[] values = new object[ctValue.Count];
            for (var i = 0; i < ctValue.Count; i++)
            {
                values[i] = ctValue[i];
            }
            GridDatas.Rows.Add(values);
        }
    }
}
posted @ 2023-08-28 02:49  回首起了风沙  Views(28)  Comments(0)    收藏  举报