2012-03-29 61 views
1

我有一個datagridview,其datagridviewlinkcolumn綁定到我的對象列表中的文本鏈接。文本鏈接是指向文件的鏈接,並且這些文件深埋在網絡存儲中,從而形成長鏈接。有什麼方法可以更改鏈接列的鏈接顯示值,以僅顯示每個完整鏈接的一部分?即 - 只是文件名本身?更改DataGridViewLinkColumn的顯示值

我讀過你可以使用相同的標題文本的鏈接列的顯示值,但我想知道如果所有的顯示值可能會不同。所以總而言之,是否有可能在鏈接列中顯示文件鏈接的一部分,而我想要顯示的所有部分都不同,並且仍然有實際的鏈接指向完整文件路徑?

回答

0

想通了。

不知道是否有更好的方法來做到這一點,但我添加了鏈接的縮短版,以我的對象,並在我的dataGridView1_CellContentClick事件中,我得到與該行(dataGridView1.Rows[e.RowIndex].DataBoundItem)相關聯的對象,並在充分調用System.Diagnostics.Process.Start()返回對象中合格的文件路徑。

+0

祝賀修復!如果可以,請確保將答案標記爲「已接受」,以便其他人會看到您的問題已得到解答,並能夠從您的解決方案中學習。乾杯〜 – 2012-03-30 16:16:00

+0

@John:你有沒有找到其他辦法來實現這個目標? – 2017-12-11 18:04:03

0

我發現了一個更好的方法來實現這一點。

首先,在創建DataGridViewLinkColumn設置UseColumnTextForLinkValue = false

設置DataGridViewLinkColumnText屬性將完整路徑被深埋在網絡存儲器中的文件的

現在,處理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 
     } 
    }