c # Сортировка сетки при загрузке формы - PullRequest
0 голосов
/ 08 февраля 2012

Я бы хотел отсортировать сетку при загрузке формы, но Visual Studio не нравится мой код. Любая помощь будет оценена!

dataGridView1.Sort(dataGridView1.Columns[0], ListSortDirection.Descending);

Ответы [ 4 ]

2 голосов
/ 08 февраля 2012

Вы можете отсортировать данные перед привязкой.Например, если у вас есть DataTable, вы можете сделать:

dataTable.DefaultView.Sort("Cola DESC");

И тогда вы свяжете свои данные уже отсортированными.

1 голос
/ 09 февраля 2012

Я заставил его работать, добавив эту строку в BindingSource

this.carCheckoutBindingSource.Sort = "startMiles DESC";
1 голос
/ 08 февраля 2012
private void Form_Load(object sender, EventArgs e)
        {
            //bind u r collection to datagridview
            DataGridView1.Sort( new RowComparer( SortOrder.Ascending ) );
        }

private class RowComparer : System.Collections.IComparer
{
    private static int sortOrderModifier = 1;

    public RowComparer(SortOrder sortOrder)
    {
        if (sortOrder == SortOrder.Descending)
        {
            sortOrderModifier = -1;
        }
        else if (sortOrder == SortOrder.Ascending)
        {
            sortOrderModifier = 1;
        }
    }

    public int Compare(object x, object y)
    {
        DataGridViewRow DataGridViewRow1 = (DataGridViewRow)x;
        DataGridViewRow DataGridViewRow2 = (DataGridViewRow)y;

        // Try to sort based on the Last Name column.
        int CompareResult = System.String.Compare(
            DataGridViewRow1.Cells[1].Value.ToString(),
            DataGridViewRow2.Cells[1].Value.ToString());

        // If the Last Names are equal, sort based on the First Name.
        if ( CompareResult == 0 )
        {
            CompareResult = System.String.Compare(
                DataGridViewRow1.Cells[0].Value.ToString(),
                DataGridViewRow2.Cells[0].Value.ToString());
        }
        return CompareResult * sortOrderModifier;
    }
}
0 голосов
/ 08 февраля 2012

Связано ли представление данных с коллекцией?Если «Да», то выполните сортировку для коллекции и повторно свяжите отсортированную коллекцию с представлением данных

Пример:

collection.OrderBy(i=> i.<PropertyName>);
datagridview.DataSource = collection;

ПРИМЕЧАНИЕ:

Моя коллекция имеет тип List.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...