devExpress表格中非绑定列的处理

该博客介绍了如何使用DevExpress的GridView控件实现动态绑定用户自定义的数据。通过创建一个User类,允许用户在运行时定义列属性,并利用CustomColumnData事件处理程序设置和获取数据。这种做法适用于数据属性不固定且部分列需要通过计算得到的情况,使用NOSQL数据库能更好地适应这种需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:

1)很多时候我们需要的类属性并不能预先完全确定,而是需要用户自己定义,所以很多时候我们使用NOSQL数据库更合适;

2)某些列是通过计算得来的,不是绑定某些属性直接获取;

因此,我们的表格不能预先绑定类的各个属性。也就是说,列绑定的fieldname不一定在类中预先定义好,

gridView实现了一个定制函数可以实现对自定义列,在回调函数中,我们再设置数据。

步骤一、我们定义一个用户类,实现后期绑定若干个数据,数据使用键值对描述:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace testUnbound16
{
    public class User
    {
        public String Id { set; get; }
        public String Name {set; get; }
        private Hashtable table = new Hashtable(); 

        public Object GetClientProperty(String key)
        {

            return table[key];
        }
        
        public void SetClientPropery(String key, Object o)
        {
            table.Add(key, o);
        }
    }
}

步骤二、通过设计器为gridview绑定一个定制函数:

 private void OnCustomUnboundDate(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
        {
            String key = e.Column.FieldName;
            int index = e.ListSourceRowIndex;
            User user = list[index];

            if (e.IsGetData)
            {

                Object value1 = user.GetClientProperty(key);
                e.Value = value1;

            }
            else
            {
                Object value1 = e.Value;
                user.SetClientPropery(key, value1);
            }
        }

步骤三、修改列属性:

通过设计器或者直接写代码,如果是列需要用户设计并绑定,则需要代码来设置

this.gridColumn3.UnboundType = DevExpress.Data.UnboundColumnType.Object;
this.gridColumn4.UnboundType = DevExpress.Data.UnboundColumnType.Object;
this.gridColumn5.UnboundType = DevExpress.Data.UnboundColumnType.Object;

步骤四、我们添加一个列表,测试一下

List<User> list = new List<User>();
        public Form1()
        {
            InitializeComponent();

            this.gridColumn3.UnboundType = DevExpress.Data.UnboundColumnType.Object;
            this.gridColumn4.UnboundType = DevExpress.Data.UnboundColumnType.Object;
            this.gridColumn5.UnboundType = DevExpress.Data.UnboundColumnType.Object;

            User user = new User();
            user.Id = "2021";
            user.Name = "robin";
            user.SetClientPropery("Key1", "test1");
            user.SetClientPropery("Key2", DateTime.Now);
            user.SetClientPropery("Key3", 12345);
            list.Add(user);
            gridControl1.DataSource = list;
        }

显示效果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值