C#对XtraGrid控件实现主从表关系绑定

1、准备源数据。

/// <summary>
/// 记录基础信息
/// </summary>
public class DetailInfo
{
    public DetailInfo()
    {
        this.ID = Guid.NewGuid().ToString();
    }

    /// <summary>
    /// ID标识
    /// </summary>
    public string ID { get; set; }

    /// <summary>
    /// 名称
    /// </summary>
    public string Name { get; set; }

    /// <summary>
    /// 描述信息
    /// </summary>
    public string Description { get; set; }
}

/// <summary>
/// 二级层次的列表
/// </summary>
public class Detail2Result : DetailInfo
{
    public List<DetailInfo> Detail2List { get; set; }
}

2、绑定数据源

/// <summary>
/// 绑定数据源
/// </summary>
private void BindData()
{
    //创建测试数据
    var result1 = new Detail2Result()
    {
        Name = "测试1",
        Description = "描述内容",
        Detail2List = new List<DetailInfo>()
        {
            new DetailInfo()
            {
                Name = "111测试",
                Description = "111描述内容"
            },
            new DetailInfo()
            {
                Name = "222测试",
                Description = "222描述内容"
            },
            new DetailInfo()
            {
                Name = "333测试",
                Description = "333描述内容"
            }
        }
    };

    var result2 = new Detail2Result()
    {
        Name = "测试2",
        Description = "描述内容",
        Detail2List = new List<DetailInfo>()
        {
            new DetailInfo()
            {
                Name = "111测试",
                Description = "111描述内容"
            },
            new DetailInfo()
            {
                Name = "222测试",
                Description = "222描述内容"
            },
            new DetailInfo()
            {
                Name = "333测试",
                Description = "333描述内容"
            }
        }
    };

    //构造一个记录的集合
    var list = new List<Detail2Result>() { result1, result2 };

    //绑定数据源
    this.gridControl.DataSource = list;
}

3、DevExpress的GridControl控件的设置

在主视图下添加一层视图为gridView2,并修改当前视图的 Change LeveName 为Detail2List (如果不修改结果是数据绑定失败)

设置gridView2属性中的ViewCaption 属性。

4、效果

5、子表格获取行数据

DevExpress.XtraGrid.Views.Grid.GridView currentView = (DevExpress.XtraGrid.Views.Grid.GridView)this.gridControl.FocusedView;
DetailInfo focusRow = currentView.GetFocusedRow() as DetailInfo; //用在事件中:currentView.GetRow(e.RowHandle) as DetailInfo;
XtraMessageBox.Show(focusRow.Name);

到此这篇关于C#对XtraGrid控件实现主从表关系绑定的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C#窗体控件DataGridView常用设置

    在默认情况下,datagridview的显示效果: 1.禁用最后一行空白. 默认情况下,最后一行空白表示自动新增行,对于需要在控件中进行编辑,可以保留 dataGridView1.AllowUserToAddRows = false; 上述禁用,仅是将用户界面交互的自动新增行禁了,但还是可以通过代码:dataGridView1.Rows.Add();来新增一行空白. 2.禁用'delete'键的删除功能. 默认情况,鼠标选中一整行,按 删除键 可以删除当前一整行 dataGridView1.Al

  • C#实现DataGridView控件行列互换的方法

    本文实例讲述了C#实现DataGridView控件行列互换的方法.分享给大家供大家参考.具体如下: 该示例程序是一个Windows窗体应用程序,有左右两个DataGridView控件:dgvLeft和dgvRight dgvRight除时间外的每一行是dgvLeft的一列 private void Form1_Load(object sender, EventArgs e) { //C#中确定控件DataGridView根据内容自动调整列宽长度的属性 //是AutoSizeColumnsMode

  • C#数据表格(DataGridView)控件的应用案例

    我们通过一个完整的实例来实现课程信息管理功能的操作,包括查询.修改.删除课程信息的操作. 为了简化实例,添加课程信息的操作直接在 SQL Server 数据库中完成. 下面分几个步骤完成. 1) 创建课程信息表创建课程信息表的 SQL 语句如下. use test; create table course ( id int primary key identity(1,1), name varchar(20), credit numeric(3,1), remark varchar(50) );

  • C# 解决datagridview控件显示大量数据拖拉卡顿问题

    问题描述: 由于在使用SQL查询大量的数据并一次显示到dataGridView控件,出现拖拉的时候卡顿. 解决方法: 1.首先分页. 2.其次把显示控件设置双buffer. 解决过程如下: 1.设置dataGridView双buffer代码如下,需要引用反射命名空间 Type dgvType = this.dataGridView1.GetType(); PropertyInfo pi = dgvType.GetProperty("DoubleBuffered", BindingFla

  • .Net使用XtraGrid控件绑定数据

    目录 设计数据源并绑定字段: 表格数据与数据源的数据同步 新增一条记录,添加行 删除选中行 获取选定行,指定列单元格的内容 Get/Set 单元格的值 选中行改变绑定行数据到对应控件中 1.判断是否有Focused行 2.获取Focused行 3.获取Focused行单元格的值 动态添加列 添加非绑定列 编辑器 添加按钮列 数据验证 1.使用RepositoryItem.Validating事件 2.使用 GridView.ValidatingEditor 事件 3.使用 GridView.Va

  • C#开发WinForm清空DataGridView控件绑定的数据

    使用DataGridView控件绑定数据后有时需要清空绑定的数据,在清除DataGridView绑定的数据时: 1.设置DataSource为null this.dgvDemo.DataSource = null 这样虽然可以清空DataGridView绑定的数据,但是DataGridView的列也会被删掉. 2.用DataGridView.Row.Clear() this.dgvDemo.Rows.Clear() 使用这种方法会报错,提示“不能清除此列表”,报错信息如下: 以上两种方法都不是想

  • C#对XtraGrid控件实现主从表关系绑定

    1.准备源数据. /// <summary> /// 记录基础信息 /// </summary> public class DetailInfo { public DetailInfo() { this.ID = Guid.NewGuid().ToString(); } /// <summary> /// ID标识 /// </summary> public string ID { get; set; } /// <summary> /// 名称

  • JS中artdialog弹出框控件之提交表单思路详解

    artDialog是一个基于javascript编写的对话框组件,它拥有精致的界面与友好的接口. 前言: 自适应内容 artDialog的特殊UI框架能够适应内容变化,甚至连外部程序动态插入的内容它仍然能自适应,因此你不必去考虑消息内容尺寸使用它.它的消息容器甚至能够根据宽度让文本居中或居左对齐--这一切全是XHTML+CSS原生实现. 完善的接口 它的接口完善,可以轻易与外部程序配合使用.如异步写入消息.控制位置.尺寸.显示与隐藏.关闭等. 细致的体验 如果不是在输入状态,它支持Esc快捷键关

  • C#语言MVC框架Aspose.Cells控件导出Excel表数据

    本文实例为大家分享了Aspose.Cells控件导出Excel表数据的具体代码,供大家参考,具体内容如下 控件bin文件下载地址 @{ ViewBag.Title = "xx"; } <script type="text/javascript" language="javascript"> function getparam() { var param = {}; param.sear = $("#sear").t

  • C# 控件属性和InitializeComponent()关系案例详解

    namespace Test22 { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 清理所有正在使用的资源. /// </summary> /// <param name="disposing"&

  • Android布局控件View ViewRootImpl WindowManagerService关系

    目录 1. View,ViewRoot和WindowManager简单介绍 1.1 View和ViewGroup 1.2 ViewRootImpl 1.3 WindowManager 2. ViewRootImpl的起源 2.1 ViewRootImpl创建时机 2.2 ViewRootImpl通知注册Window 3.ViewRootImpl与WindowManagerService的通信 3.1 WindowSession 3.2 IWindow 4. ViewRootImpl与View 1

  • jQuery UI Dialog控件中的表单无法正常提交的解决方法

    最近使用jQuery UI的Dialog控件时发现如果在此控件放置表单,则所有表单均无法正常提交,具体表现为: 1.提交按钮失效,点击后无任何反应. 2.即便是使用其它手段使页面产生提交,服务器端也无法取到Dialog中的表单数据. 研究了页面源码后发现,jQuery UI Dialog控件初始化时动态生成的HTML元素被添加到页面的尾部.form元素的后面,而原始的Dialog模板部分(其内包含表单元素)也被移到了 动态生成的HTML元素内.也就是说,原先在form内的表单在Dialog初始化

  • AspNetAjaxPager,Asp.Net通用无刷新Ajax分页控件,支持多样式多数据绑定

    本控件可以对GridView,Repeater,DataGrid,DataList...几乎所有的.net数据绑定控件进行分页,全部无刷新,数据绑定部分可以使用存储过程也可以直接使用sql语句,这对本控件没有任何干扰!本控件具有较好的用户界面,能够根据需要变换各种样式,配合css控制效果则更好! 1.分页样式效果图: 2.如何使用: 于bin目录下添加:AspNetAjaxPager.dll引用 aspx文件内容: 复制代码 代码如下: <%@ Page Language="C#"

  • JavaFx UI控件与代码间的绑定方法

    JavaFx初探一,UI控件的使用,具体内容如下 方式一:使用纯代码直接new view控件,这样就不涉及到与fxml文件之间的交互了 方式二:使用fxml编写界面文件,用可视化工具scene builder 来构建交互界面. 分两种方式绑定控件,可以用Android的方法在java中直接调用类似findviewbyId的方法,先在xml文件中设置fxid,然后根据id去找这个控件,代码如下 @Override public void start(Stage primaryStage) thro

  • 全面解析Bootstrap表单使用方法(表单控件)

    一.输入框input 单行输入框,常见的文本输入框,也就是input的type属性值为text. 在Bootstrap中使用input时也必须添加type类型,如果没有指定type类型,将无法得到正确的样式,因为Bootstrap框架都是通过input[type="?"] (其中?号代表type类型,比如说text类型,对应的是input[type="text"])的形式来定义样式的. 为了让控件在各种表单风格中样式不出错,需要添加类名".form-con

随机推荐