2012-03-29 3 views
1

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

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

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

ответ

0

Выяснил это.

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

+0

Поздравляем с ремонтом! Когда вы в состоянии, пожалуйста, отметьте свой ответ как «принятый», так что другой увидит, что на ваш вопрос был дан ответ, и вы сможете учиться на своем решении. Cheers ~ –

+0

@John: Вы нашли какой-либо другой способ достичь этого? –

0

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

Во-первых, при создании 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 
     } 
    } 
Смежные вопросы