DataGridView控件用法合集(六)

前端之家收集整理的这篇文章主要介绍了DataGridView控件用法合集(六)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
近期将DataGridView常用的一些用法做了一个整理。为防止页面过长,现分批贴出来,此为第六部分。

DataGridView排序


29. DataGridView行排序(点击列表头自动排序的设置)
30. DataGridView自动行排序(新追加值也会自动排序)
31. DataGridView自动行排序禁止情况下的排序
32. DataGridView指定列指定排序

29. DataGridView行排序(点击列表头自动排序的设置)

[VB.NET]

'並び替えができないようにする

For Each c As DataGridViewColumn In DataGridView1.Columns

c.SortMode = DataGridViewColumnSortMode.NotSortable

Next c

[C#]

//並び替えができないようにする

foreach (DataGridViewColumn c in DataGridView1.Columns)

c.SortMode = DataGridViewColumnSortMode.NotSortable;

30. DataGridView自动行排序(新追加值也会自动排序)

[VB.NET]

'フォームのLoadイベントハンドラ

Private Sub Form1_Load(ByVal sender As System.Object,_

ByVal e As System.EventArgs) Handles MyBase.Load

'自動的に並び替えられるようにする

Dim c As DataGridViewColumn

For Each c In DataGridView1.Columns

c.SortMode = DataGridViewColumnSortMode.Automatic

Next c

End Sub

'Button1のClickイベントハンドラ

Private Sub Button1_Click(ByVal sender As System.Object,_

ByVal e As System.EventArgs) Handles Button1.Click

If DataGridView1.CurrentCell Is Nothing Then

Return

End If

'並び替える列を決める

Dim sortColumn As DataGridViewColumn = _

DataGridView1.CurrentCell.OwningColumn

'並び替えの方向(昇順か降順か)を決める

Dim sortDirection As System.ComponentModel.ListSortDirection = _

System.ComponentModel.ListSortDirection.Ascending

If Not (DataGridView1.SortedColumn Is Nothing) AndAlso _

DataGridView1.SortedColumn.Equals(sortColumn) Then

sortDirection = IIf(DataGridView1.SortOrder = SortOrder.Ascending,_

System.ComponentModel.ListSortDirection.Descending,_

System.ComponentModel.ListSortDirection.Ascending)

End If

'並び替えを行う

DataGridView1.Sort(sortColumn,sortDirection)

End Sub

[C#]

//フォームのLoadイベントハンドラ

private void Form1_Load(object sender,EventArgs e)

{

//自動的に並び替えられるようにする

foreach (DataGridViewColumn c in DataGridView1.Columns)

c.SortMode = DataGridViewColumnSortMode.Automatic;

}

//Button1のClickイベントハンドラ

private void Button1_Click(object sender,EventArgs e)

{

if (DataGridView1.CurrentCell == null)

return;

//並び替える列を決める

DataGridViewColumn sortColumn = DataGridView1.CurrentCell.OwningColumn;

//並び替えの方向(昇順か降順か)を決める

ListSortDirection sortDirection = ListSortDirection.Ascending;

if (DataGridView1.SortedColumn != null &&

DataGridView1.SortedColumn.Equals(sortColumn))

{

sortDirection =

DataGridView1.SortOrder == SortOrder.Ascending ?

ListSortDirection.Descending : ListSortDirection.Ascending;

}

//並び替えを行う

DataGridView1.Sort(sortColumn,sortDirection);

}

31. DataGridView自动行排序禁止情况下的排序

'ColumnHeaderMouseClickイベントハンドラ

Private Sub DataGridView1_ColumnHeaderMouseClick(ByVal sender As Object,_

ByVal e As DataGridViewCellMouseEventArgs) _

Handles DataGridView1.ColumnHeaderMouseClick

Dim clickedColumn As DataGridViewColumn = _

DataGridView1.Columns(e.ColumnIndex)

If clickedColumn.SortMode <> DataGridViewColumnSortMode.Automatic Then

Me.SortRows(clickedColumn,True)

End If

End Sub

'RowsAddedイベントハンドラ

Private Sub DataGridView1_RowsAdded(ByVal sender As Object,_

ByVal e As DataGridViewRowsAddedEventArgs) _

Handles DataGridView1.RowsAdded

Me.SortRows(DataGridView1.SortedColumn,False)

End Sub

'CellValueChangedイベントハンドラ

Private Sub DataGridView1_CellValueChanged(ByVal sender As Object,_

ByVal e As DataGridViewCellEventArgs) _

Handles DataGridView1.CellValueChanged

If Not (DataGridView1.SortedColumn Is Nothing) AndAlso _

e.ColumnIndex = DataGridView1.SortedColumn.Index Then

Me.SortRows(DataGridView1.SortedColumn,False)

End If

End Sub

''' <summary>

''' 指定された列を基準にして並び替えを行う

''' </summary>

''' <param name="sortColumn">基準にする列</param>

''' <param name="orderToggle">並び替えの方向をトグルで変更する</param>

Private Sub SortRows(ByVal sortColumn As DataGridViewColumn,_

ByVal orderToggle As Boolean)

If sortColumn Is Nothing Then

Return

End If

'今までの並び替えグリフを消す

If sortColumn.SortMode = DataGridViewColumnSortMode.Programmatic AndAlso _

Not (DataGridView1.SortedColumn Is Nothing) AndAlso _

Not DataGridView1.SortedColumn.Equals(sortColumn) Then

DataGridView1.SortedColumn.HeaderCell.SortGlyphDirection = _

SortOrder.None

End If

'並び替えの方向(昇順か降順か)を決める

Dim sortDirection As System.ComponentModel.ListSortDirection

If orderToggle Then

sortDirection = IIf(DataGridView1.SortOrder = SortOrder.Descending,_

System.ComponentModel.ListSortDirection.Ascending,_

System.ComponentModel.ListSortDirection.Descending)

Else

sortDirection = IIf(DataGridView1.SortOrder = SortOrder.Descending,_

System.ComponentModel.ListSortDirection.Ascending)

End If

Dim sOrder As SortOrder = _

IIf(sortDirection = System.ComponentModel.ListSortDirection.Ascending,_

SortOrder.Ascending,SortOrder.Descending)

'並び替えを行う

DataGridView1.Sort(sortColumn,sortDirection)

If sortColumn.SortMode = DataGridViewColumnSortMode.Programmatic Then

'並び替えグリフを変更

sortColumn.HeaderCell.SortGlyphDirection = sOrder

End If

End Sub

[C#]

//フォームのLoadイベントハンドラ

private void Form1_Load(object sender,EventArgs e)

{

//イベントハンドラの追加

DataGridView1.RowsAdded += new DataGridViewRowsAddedEventHandler(

DataGridView1_RowsAdded);

DataGridView1.CellValueChanged += new DataGridViewCellEventHandler(

DataGridView1_CellValueChanged);

DataGridView1.ColumnHeaderMouseClick += new DataGridViewCellMouseEventHandler(

DataGridView1_ColumnHeaderMouseClick);

}

//ColumnHeaderMouseClickイベントハンドラ

private void DataGridView1_ColumnHeaderMouseClick(object sender,

DataGridViewCellMouseEventArgs e)

{

DataGridViewColumn clickedColumn = DataGridView1.Columns[e.ColumnIndex];

if (clickedColumn.SortMode != DataGridViewColumnSortMode.Automatic)

this.SortRows(clickedColumn,true);

}

//RowsAddedイベントハンドラ

private void DataGridView1_RowsAdded(object sender,

DataGridViewRowsAddedEventArgs e)

{

this.SortRows(DataGridView1.SortedColumn,false);

}

//CellValueChangedイベントハンドラ

private void DataGridView1_CellValueChanged(object sender,

DataGridViewCellEventArgs e)

{

if (DataGridView1.SortedColumn != null &&

e.ColumnIndex == DataGridView1.SortedColumn.Index)

this.SortRows(DataGridView1.SortedColumn,false);

}

/// <summary>

/// 指定された列を基準にして並び替えを行う

/// </summary>

/// <param name="sortColumn">基準にする列</param>

/// <param name="orderToggle">並び替えの方向をトグルで変更する</param>

private void SortRows(DataGridViewColumn sortColumn,bool orderToggle)

{

if (sortColumn == null)

return;

//今までの並び替えグリフを消す

if (sortColumn.SortMode == DataGridViewColumnSortMode.Programmatic &&

DataGridView1.SortedColumn != null &&

!DataGridView1.SortedColumn.Equals(sortColumn))

{

DataGridView1.SortedColumn.HeaderCell.SortGlyphDirection =

SortOrder.None;

}

//並び替えの方向(昇順か降順か)を決める

ListSortDirection sortDirection;

if (orderToggle)

{

sortDirection =

DataGridView1.SortOrder == SortOrder.Descending ?

ListSortDirection.Ascending : ListSortDirection.Descending;

}

else

{

sortDirection =

DataGridView1.SortOrder == SortOrder.Descending ?

ListSortDirection.Descending : ListSortDirection.Ascending;

}

SortOrder sortOrder =

sortDirection == ListSortDirection.Ascending ?

SortOrder.Ascending : SortOrder.Descending;

//並び替えを行う

DataGridView1.Sort(sortColumn,sortDirection);

if (sortColumn.SortMode == DataGridViewColumnSortMode.Programmatic)

{

//並び替えグリフを変更

sortColumn.HeaderCell.SortGlyphDirection = sortOrder;

}

}

32. DataGridView指定列指定排序

[VB.NET]

'DataGridView1にバインドされているDataTableを取得

Dim dt As DataTable = CType(DataGridView1.DataSource,DataTable)

'DataViewを取得

Dim dv As DataView = dt.DefaultView

'Column1とColumn2で昇順に並び替える

dv.Sort = "Column1,Column2 ASC"

'2つの列のヘッダーに並び替えグリフを表示する

DataGridView1.Columns("Column1").HeaderCell.SortGlyphDirection = _

SortOrder.Ascending

DataGridView1.Columns("Column2").HeaderCell.SortGlyphDirection = _

SortOrder.Ascending

[C#]

//DataGridView1にバインドされているDataTableを取得

DataTable dt = (DataTable)DataGridView1.DataSource;

//DataViewを取得

DataView dv = dt.DefaultView;

//Column1とColumn2で昇順に並び替える

dv.Sort = "Column1,Column2 ASC";

//2つの列のヘッダーに並び替えグリフを表示する

DataGridView1.Columns["Column1"].HeaderCell.SortGlyphDirection =

SortOrder.Ascending;

DataGridView1.Columns["Column2"].HeaderCell.SortGlyphDirection =

SortOrder.Ascending;

原文链接:https://www.f2er.com/vb/260727.html

猜你在找的VB相关文章