DataGridView控件用法合集(六)

转载 2011年01月11日 14:35:00

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

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

'Button1Clickイベントハンドラ

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

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.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

'Column1Column2で昇順に並び替える

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;

//Column1Column2で昇順に並び替える

dv.Sort = "Column1, Column2 ASC";

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

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

    SortOrder.Ascending;

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

    SortOrder.Ascending; 

DataGridView控件用法合集

1. DataGridView当前的单元格属性取得、变更 2. DataGridView编辑属性 3. DataGridView最下面一列新追加行非表示 4. DataGridView判断当前选...
  • jsjpanxiaoyu
  • jsjpanxiaoyu
  • 2013年12月29日 12:13
  • 1501

【VB.net】DataGridView控件的使用

VS中的DataGridView控件,在机房重构里的出镜率还是很高哒~这篇博客就把一些有关DataGridView 控件的一些使用细节和大家分享一下!   找到控件:     ...
  • W15732624773
  • W15732624773
  • 2016年05月22日 19:28
  • 3757

C#中DataGridView控件使用大全

DataGridView 动态添加新行:   DataGridView控件在实际应用中非常实用,特别需要表格显示数据时。可以静态绑定数据源,这样就自动为DataGridView控件添加相应...
  • u010909114
  • u010909114
  • 2016年07月25日 15:52
  • 11571

DataGridView控件用法合集(六)

近期将DataGridView常用的一些用法做了一个整理。为防止页面过长,现分批贴出来,此为第六部分。 DataGridView排序 29. DataGridView行排序(点击列表头自动排序...
  • sscsgss
  • sscsgss
  • 2011年10月29日 23:49
  • 540

DataGridView控件用法合集

  • 2010年05月29日 18:55
  • 581KB
  • 下载

DataGridView控件用法合集

  • 2014年02月05日 12:10
  • 306KB
  • 下载

C# DataGridView控件用法合集.docx

  • 2011年12月08日 12:50
  • 55KB
  • 下载

DataGridView控件用法合集

  • 2007年09月18日 13:21
  • 158KB
  • 下载

DataGridView控件用法合集

  • 2008年02月19日 11:18
  • 984KB
  • 下载

DataGridView控件用法合集

  • 2009年08月28日 16:08
  • 583KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DataGridView控件用法合集(六)
举报原因:
原因补充:

(最多只允许输入30个字)