GridControl主从表设置
来源:互联网 发布:先付款钱在淘宝上 编辑:程序博客网 时间:2024/05/17 06:23
GridControl主从表的设置有目前我知道有2种方法一种是使用datarelation,一直是在对象中增加Childs 的 list。说实话,一开始弄这个主从表都弄的头大了。由于是做项目,都是使用对象的。而且返回的都是Ilist!主从表关系都弄了几天,现在终于解决了,而且还知道怎么获取明细中的数据了!
首先使用对象中的关系来设置主表关系。
代码如下:以下是设置主从表,获取主表行,点击明细表行获取明细表行。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraGrid.Views.BandedGrid;
using DevExpress.XtraGrid.Views.Base;
using System.Linq;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraEditors.Repository;
using DevExpress.XtraGrid.Views.Grid;
namespace test
{
public partial class Form3 : Form
{
GridView gridviewdetail = new GridView();//由于明细表只有在运行时可见,所以我们要设定一个明细表以便获取明细表数据。
public Form3()
{
InitializeComponent();//在界面上增加一个girdControl即可。
InitGrid();
}
private void InitGrid()
{
//模拟几个数据
List<ClassNo> listDataSource2 = new List<ClassNo>();
listDataSource2.Add (new ClassNo (1,1,"计算机班01","备注01"));
listDataSource2.Add(new ClassNo(2, 2, "计算机班02", "备注02"));
listDataSource2.Add(new ClassNo(3, 3, "计算机班03", "备注03"));
listDataSource2.Add(new ClassNo(4, 1, "计算机班 ", "备注01"));
List<Record> listDataSource = new List<Record>();
listDataSource.Add(new Record(1, "张三", "男", Convert.ToDateTime("1989-5-6"), 115.5f, 101, 96, "", listDataSource2));
//Record中有ClassNo对像,这样运行时明细就可见了。一定要是list,如果是IList就不能出现明细!!,如果是IList要将IList转为list才可以。
listDataSource.Add(new Record(2, "李四", "女", Convert.ToDateTime("1987-12-23"), 92, 85, 87, "", listDataSource2));
listDataSource.Add(new Record(3, "王五", "女", Convert.ToDateTime("1990-2-11"), 88, 69, 41.5f, "", listDataSource2));
listDataSource.Add(new Record(4, "赵六", "男", Convert.ToDateTime("1988-9-1"), 119, 108, 110, "备注行", listDataSource2));
//绑定数据源并显示
gridControl1.DataSource = listDataSource;
}
private void gridView1_Click(object sender, EventArgs e) //获取行数据
{
int numnber = gridView1.FocusedRowHandle;
object id = gridView1.GetRowCellValue(numnber, "ID");//获取record的ID。
}
private void gridView1_MasterRowExpanded(object sender, DevExpress.XtraGrid.Views.Grid.CustomMasterRowEventArgs e)(此事件是打开明细后发生)
{
gridviewdetail= gridView1.GetDetailView(e.RowHandle, e.RelationIndex) as DevExpress.XtraGrid.Views.Grid.GridView;//将明细的数据赋值gridviewdetail中
gridviewdetail.OptionsBehavior.Editable = false;//gridviewdetail不可编辑即明显不可编辑
gridviewdetail.Click += new System.EventHandler(this.gridview_Click); //设置明细点击的事件当点击明细时发生的!我们用来获取明细数据!
}
private void gridview_Click(object sender, EventArgs e)
{
int numnber = gridviewdetail.FocusedRowHandle;
object id = gridviewdetail.GetRowCellValue(numnber, "ID");//获取明细中的ID.
}
#region 运行时绑定到实现Ilist接口的数据源Record
public class Record
{
int id;
DateTime birth;
string name, sex, remark;
float math, chinese, english;
List<ClassNo> classnos;
public Record(int id, string name, string sex, DateTime birth, float math, float chinese, float english, string remark, List<ClassNo> classnos)
{
this.id = id;
this.name = name;
this.sex = sex;
this.birth = birth;
this.math = math;
this.chinese = chinese;
this.english = english;
this.remark = remark;
this.classnos = classnos;
}
public int ID { get { return id; } }
public string Name
{
get { return name; }
set { name = value; }
}
public string Sex
{
get { return sex; }
set { sex = value; }
}
public DateTime Birth
{
get { return birth; }
set { birth = value; }
}
public float Math
{
get { return math; }
set { math = value; }
}
public float Chinese
{
get { return chinese; }
set { chinese = value; }
}
public float English
{
get { return english; }
set { english = value; }
}
public string Remark
{
get { return remark; }
set { remark = value; }
}
public List<ClassNo> GetClassNOs
{
get { return classnos; }
set { classnos = value; }
}
}
#endregion
#region 运行时绑定到实现Ilist接口的数据源ClassNo,
public class ClassNo
{
int id,recordId;
string remark;
public ClassNo(int id, int recordId, string calssno, string remark)
{
this.id = id;
this.recordId =recordId ;
this.remark = remark;
}
public int ID { get { return id; } }
public int RecordId
{
get { return recordId; }
set { recordId = value; }
}
public string Remark
{
get { return remark; }
set { remark = value; }
}
}
#endregion
}
}
还有一种设置主从表关系的方法。使用datset
注:GridControl中包含了GridView 添加GridControl1
连接数据库:
string souce ="server=(local);Integrated Security=SSPI;database=dx";
SqlConnection conn =newSqlConnection(souce);
conn.Open();
string str ="select * from base_color";
string str2 ="select * from base_detail";
string str3 ="select * from base_three";
SqlDataAdapter da =newSqlDataAdapter(str, con);
SqlDataAdapter da2 =newSqlDataAdapter(str2, con);
SqlDataAdapter da3 =newSqlDataAdapter(str3, con);
DataSet ds =newDataSet();
a.Fill(ds, "color");
da2.Fill(ds, "detail");
da3.Fill(ds, "three");
DataRelation dr = new DataRelation("2层", ds.Tables["color"].Columns["id"],ds.Tables["detail"].Columns["color_no"]);
//设定关系,ds.color(表). Id(字段)= ds.detail. color_no
DataRelation dr2 = new DataRelation("3层", ds.Tables["color"].Columns["id"],ds.Tables["three"].Columns["color_no"]);
DataRelation dr3 = new DataRelation("4层", ds.Tables["detail"].Columns["id"],ds.Tables["three"].Columns["color_no"]);
ds.Relations.Add(dr);
ds.Relations.Add(dr2);
ds.Relations.Add(dr3);
gridControl1.DataSource = ds.Tables[0];//设定主表
- GridControl主从表设置
- DevExpress GridControl主从表
- GridControl如何绑定主从表
- DevExpress GridControl gridView 主从表
- [DevExpress]GridControl主从表显示
- DevExpressControl中的GridControl展现主从表数据结构
- GridControl主从表的数据绑定以及从表事件
- devexpress gridcontrol 主从表 获取从表数据
- DevExpress中GridControl实现主从表绑定数据
- DevExpress中GridControl实现主从表绑定数据
- GridControl 控件-----List<T>数据源 实现主从表关系绑定
- cxgrid 主从表设置
- gridControl常用属性设置
- gridControl常用属性设置
- DEVexpress GridControl 属性设置
- gridcontrol 设置字体
- GridControl相关设置
- 三层的主从表设置
- 几种qsort
- lambda 注意点
- 用户空间与内核空间数据交换的方式(3)------seq_file
- 获取本地ip(一个或多个都能取)
- Android网络编程之Http通信
- GridControl主从表设置
- Java高新技术新特性之枚举
- [学习笔记]信息化基础知识
- vector地址发生变化
- 取小区间覆盖
- 用VC写DLL
- oracle 重做日志详解
- Eclipse中配置使用Heritrix-1.14.4
- android中dip、px相互换算