簡體   English   中英

單擊DataGridView中的列標題以進行排序時,如何凍結第一行?

[英]How to freeze first row when I clicked the header of column for sort in DataGridView?

我有一個桌面應用程序,並且在窗體上使用DataGridView。 我凍結了第一行。 但是,當我單擊DataGridView中列的標題時,第一行的位置也在更改。 排序時如何忽略第一行。

本質上,您要問的是只能對DataGridView的一部分進行排序。 據我所知,沒有簡單或標准的方法可以做到這一點,Filip對以下問題的回答也與此相呼應: 在DataGridView中對選定的行進行排序 這並不意味着不可能實現您想要的行為。

Filip提供了一個實現,在這個問題上 ,Justin提供了您必須稍作修改但可能滿足您需要的代碼。 該問題詢問如何在DataGridView上下移動行,但是我認為您可以修改其實現,以便在排序后將要保持靜態的行一直移動到頂部。 根據您要排序的行數,第一行可能會消失並重新出現。 但是,如果您的數據集相對較小,那么我無法想象第一行的短暫閃爍會被排序到某個隨機位置,然后又添加回頂部會導致任何重大問題。

DataGridViewSortCompare事件的SortCompare事件處理程序中,嘗試執行以下操作:

private void dataGridView1_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
{
    if (e.RowIndex1 == 0)
    {
        e.Handled = true;
    }
    else
    {
        e.Handled = false;
    }
}
    private void dataGridView1_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
    {
        int so = 1;
        if (dataGridView1.SortOrder == SortOrder.Ascending)
        {
            so = -1;
        }
        if (e.RowIndex1 == 0 )
        {
            e.SortResult = so;
            e.Handled = true;
        }
        if (e.RowIndex2 == 0)
        {
            e.SortResult = -so;
            e.Handled = true;
        }
    }

通過相應地設置第一行的排序結果,此代碼將第一行始終置於排序列表的頂部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM