This repository has been archived by the owner on Sep 11, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Form1.cs
96 lines (87 loc) · 3.07 KB
/
Form1.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraGrid.Views.Layout;
namespace WindowsApplication16
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void layoutView1_CustomUnboundColumnData(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
{
LayoutView view = sender as LayoutView;
BindingList<Person> list = view.DataSource as BindingList<Person>;
Person p = list[e.ListSourceRowIndex];
if (e.Column.FieldName == "Title")
{
Employee emp = p as Employee;
if (emp != null)
{
if (e.IsGetData)
{
e.Value = (p as Employee).Title;
}
}
}
if (e.Column.FieldName == "TotalTurnover")
{
Customer cust = p as Customer;
if (cust != null)
{
if (e.IsGetData)
{
e.Value = (p as Customer).TotalTurnover;
}
}
}
}
private void layoutView1_CustomCardLayout(object sender, DevExpress.XtraGrid.Views.Layout.Events.LayoutViewCustomCardLayoutEventArgs e)
{
LayoutView view = sender as LayoutView;
Person p = view.GetRow(e.RowHandle) as Person;
string colTitleName = view.Columns["Title"].LayoutViewField.Name;
string colTotalTurnover = view.Columns["TotalTurnover"].LayoutViewField.Name;
if (p.GetType() == typeof(Employee))
{
e.CardDifferences.AddItemDifference(colTitleName,
LayoutItemDifferenceType.ItemVisibility, true);
e.CardDifferences.AddItemDifference(colTotalTurnover,
LayoutItemDifferenceType.ItemVisibility, false);
}
if (p.GetType() == typeof(Customer))
{
e.CardDifferences.AddItemDifference(colTitleName,
LayoutItemDifferenceType.ItemVisibility, false);
e.CardDifferences.AddItemDifference(colTotalTurnover,
LayoutItemDifferenceType.ItemVisibility, true);
}
}
private void Form1_Load(object sender, EventArgs e)
{
BindingList<Person> list = new BindingList<Person>();
list.Add(new Employee());
list.Add(new Customer());
gridControl1.DataSource = list;
layoutView1.OptionsBehavior.Editable = false;
}
}
class Person
{
public string Name { get { return "Person Name"; } }
}
class Employee : Person
{
public string Title { get { return "Title"; } }
}
class Customer : Person
{
public decimal TotalTurnover { get { return 3000; } }
}
}