作成日: 2020/06/24 最終更新日: 2020/06/24
文書種別
使用方法
詳細
GanttViewには、グリッドビューで、列のタイトル部をクリックしてデータをソートする機能は用意されていません。
ただし代替方法として、グリッドビューで内部的に使用されているC1FlexGridにアクセスし、そのMouseDownイベントを利用して実装可能です。このイベント内で、HitTestメソッドを用いてクリックした列を判別し、C1GanttViewのSortTasksメソッドにて手動でタスクのソートを行わせます。
◎サンプルコード(VB)
ただし代替方法として、グリッドビューで内部的に使用されているC1FlexGridにアクセスし、そのMouseDownイベントを利用して実装可能です。このイベント内で、HitTestメソッドを用いてクリックした列を判別し、C1GanttViewのSortTasksメソッドにて手動でタスクのソートを行わせます。
◎サンプルコード(VB)
Dim li As List(Of ListSortDirection)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' グリッドビューで内部的に使用されているC1FlexGridを取得
Dim grid As C1FlexGrid = CType(C1GanttView1.Controls(2), C1FlexGrid)
AddHandler grid.MouseDown, AddressOf Grid_MouseDown
li = New List(Of ListSortDirection)
Dim i As Integer = 0
For i = 0 To C1GanttView1.Columns.Count - 1
li.Add(ListSortDirection.Descending)
Next
End Sub
Private Sub Grid_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs)
Dim grid As C1FlexGrid = CType(sender, C1FlexGrid)
Dim ht As HitTestInfo = grid.HitTest(e.X, e.Y)
If (ht.Type = HitTestTypeEnum.ColumnHeader) Then
Dim col As TaskPropertyColumn = CType(C1GanttView1.Columns((ht.Column - 1)), TaskPropertyColumn)
Dim properties As PropertyDescriptorCollection = TypeDescriptor.GetProperties(C1GanttView1.Tasks(0))
Dim myProperty As PropertyDescriptor = properties.Find(col.Property.ToString, False)
If (li((ht.Column - 1)) = ListSortDirection.Descending) Then
C1GanttView1.SortTasks(myProperty, ListSortDirection.Ascending)
li((ht.Column - 1)) = ListSortDirection.Ascending
Else
C1GanttView1.SortTasks(myProperty, ListSortDirection.Descending)
li((ht.Column - 1)) = ListSortDirection.Descending
End If
End If
End Sub
◎サンプルコード(C#) List li;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// グリッドビューで内部的に使用されているC1FlexGridを取得
C1FlexGrid grid = c1GanttView1.Controls[2] as C1FlexGrid;
grid.MouseDown += Grid_MouseDown;
li = new List();
for(int i = 0; i < c1GanttView1.Columns.Count; i++)
{
li.Add(ListSortDirection.Descending);
}
}
private void Grid_MouseDown(object sender, MouseEventArgs e)
{
C1FlexGrid grid = sender as C1FlexGrid;
HitTestInfo ht = grid.HitTest(e.X, e.Y);
if(ht.Type == HitTestTypeEnum.ColumnHeader)
{
TaskPropertyColumn col = c1GanttView1.Columns[ht.Column-1] as TaskPropertyColumn;
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(c1GanttView1.Tasks[0]);
PropertyDescriptor myProperty = properties.Find(col.Property.ToString(), false);
if(li[ht.Column-1] == ListSortDirection.Descending)
{
c1GanttView1.SortTasks(myProperty, ListSortDirection.Ascending);
li[ht.Column - 1] = ListSortDirection.Ascending;
}
else
{
c1GanttView1.SortTasks(myProperty, ListSortDirection.Descending);
li[ht.Column - 1] = ListSortDirection.Descending;
}
}
}
旧文書番号
85750