индекс столбца таблицы данных - PullRequest
16 голосов
/ 08 июля 2011

У меня есть форма с виджетом DataGridView, и мне нужно получить индекс столбца с выбранным именем.

Например, предположим, что у меня есть таблица с 2 столбцами: Имя,Фамилия.Мне нужен способ получить индекс имени столбца.Проблема в том, что он все время меняется в зависимости от DataSource, но этот столбец всегда имеет одно и то же имя «Имя».

Кто-нибудь знает, как решить проблему?

Ответы [ 4 ]

24 голосов
/ 08 июля 2011

Чтобы получить столбец DataGridView по имени, вы просто ссылаетесь на него через индексатор коллекции столбцов:

datagridview1.Columns["columnName"]

Тогда вы можете получить индекс столбца из этого столбца:

datagridview1.Columns["columnName"].Index;

Обратите внимание, что если вы используете недопустимое имя столбца, эта ссылка будет возвращать ноль, поэтому вы можете проверить, что ссылка на столбец не является нулевой, прежде чем использовать ее, или сначала использовать метод сбора .Contains() столбцов. *

1 голос
/ 21 декабря 2012

Если я прав, e.ColumnIndex тоже подойдет для этого. Вы можете проверить документацию MSDN здесь

0 голосов
/ 11 февраля 2016

создайте статический класс под кодом

public static class MyTools
{
    public static int IndexByName(this DataGridView dgv, string name)
    {
        foreach(DataGridViewColumn col in dgv.Columns)
        {
            if(col.HeaderText.ToUpper().Trim() == name.ToUpper().Trim())
            {
                return col.Index;
            }
        }
        return -1;
    }
}

и затем вызовите его с вашим dataGridView

int index = datagridview1.IndexByName("columnName");
0 голосов
/ 02 апреля 2014

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

ColumnName.Index

Это избавляет от необходимости проверять, является ли имя столбца действительным во время выполнения, поскольку это приведет к ошибке компиляции, если столбец не существует. Это также облегчает рефакторинг.

Я рекомендую дать столбцам разумное имя (например, DCOL_SomeName), чтобы вы могли легко их различить. Включение имени виджета DataGridView поможет, если у вас есть несколько виджетов DataGridView в одной форме.

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