Repository navigation
Expand file tree
/
Copy pathRelationshipSelectionDialog.cs
More file actions
56 lines (50 loc) · 2.42 KB
/
Copy pathRelationshipSelectionDialog.cs
File metadata and controls
56 lines (50 loc) · 2.42 KB
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
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Metadata;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Windows.Forms;
namespace Futurez.Xrm.Tools
{
public partial class RelationshipSelectionDialog : Form
{
public RelationshipSelectionDialog(IOrganizationService service, EntityMetadata emd, List<string> selectedRelationships)
{
InitializeComponent();
lvOneToMany.Items.AddRange(emd.OneToManyRelationships.Select(r => new ListViewItem(r.SchemaName) { SubItems = { new ListViewItem.ListViewSubItem { Text = r.ReferencingEntity } }, Checked = selectedRelationships.Contains(r.SchemaName) }).ToArray());
lvManyToOne.Items.AddRange(emd.ManyToOneRelationships.Select(r => new ListViewItem(r.SchemaName) { SubItems = { new ListViewItem.ListViewSubItem { Text = r.ReferencedEntity } }, Checked = selectedRelationships.Contains(r.SchemaName) }).ToArray());
lvManyToMany.Items.AddRange(emd.ManyToManyRelationships.Select(r => new ListViewItem(r.SchemaName) { SubItems = { new ListViewItem.ListViewSubItem { Text = r.Entity1LogicalName == emd.LogicalName ? r.Entity2LogicalName : r.Entity1LogicalName } }, Checked = selectedRelationships.Contains(r.SchemaName) }).ToArray());
}
public List<string> SelectedRelationships
{
get
{
return (lvOneToMany.CheckedItems.Cast<ListViewItem>().Select(i => i.Text)
.Union(lvManyToOne.CheckedItems.Cast<ListViewItem>().Select(i => i.Text))
.Union(lvManyToMany.CheckedItems.Cast<ListViewItem>().Select(i => i.Text))).ToList();
}
}
private void lvOneToMany_ColumnClick(object sender, ColumnClickEventArgs e)
{
var lv = (ListView)sender;
if (lv.ListViewItemSorter is ListViewItemComparer lvic)
{
if (lvic.Column != e.Column)
{
lvic.Column = e.Column;
lvic.Order = SortOrder.Ascending;
}
else
{
lvic.Order = lvic.Order == SortOrder.Ascending ? SortOrder.Descending : SortOrder.Ascending;
}
}
else
{
lv.ListViewItemSorter = new ListViewItemComparer(e.Column, SortOrder.Ascending);
}
lv.Sort();
}
}
}