Изменить отображаемое значение DataGridViewLinkColumn - PullRequest
1 голос
/ 29 марта 2012

У меня есть сетевое представление с колонкой ссылок на сетку данных, связанной с текстовой ссылкой в ​​моем списке объектов. Текстовые ссылки - это ссылки на файлы, а файлы находятся глубоко в сетевом хранилище, создавая длинные ссылки. Можно ли каким-то образом изменить отображаемое значение ссылки в столбце ссылок, чтобы отображалась только часть каждой полной ссылки? т.е. - только само имя файла?

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

Итак, подведем итог: можно ли отобразить часть ссылки на файл в столбце ссылок, в то время как все части, которые я хочу показать, будут разными и все же будут иметь фактическую точку ссылки на полный путь файла?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2017

Я нашел лучший способ добиться этого.

Сначала при создании набора DataGridViewLinkColumn UseColumnTextForLinkValue = false

Установите для свойства Text DataGridViewLinkColumn полный полный путь файла, который находится глубоко в сетевом хранилище.

Теперь обработайте CellFormatting событие DataGridView и установите для свойства Value ячейки отображаемое имя ссылки

private void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {

        if (excelDataGridView.Columns[e.ColumnIndex].Name.Equals("Links"))
        {
             if(e.Value != null)
                e.Value = Path.GetFileName(e.Value.ToString()); //change the display name for Hyperlink
        }
    }

Чтобы выполнить какое-либо действие при нажатии на ссылку, вам нужно обработать CellContentClick событие DataGridView следующим образом

    private void dataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        if(e.ColumnIndex == excelDataGridView.Columns["Links"].Index) //Handling of HyperLink Click
        {
            string cellValue = excelDataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
            Process.Start(cellValue); //assumes the link points to the text file and opens it in the default text editor
        }
    }
0 голосов
/ 30 марта 2012

Понял.

Не уверен, что есть лучший способ сделать это, но я добавил укороченную версию ссылки на мой объект, и в моем событии dataGridView1_CellContentClick я получил связанный объектсо строкой (dataGridView1.Rows[e.RowIndex].DataBoundItem) и вызовом System.Diagnostics.Process.Start() для полного пути к файлу в возвращаемом объекте.

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