更改DataGridViewLinkColumn的显示值
本文关键字:显示 DataGridViewLinkColumn 更改 | 更新日期: 2023-09-27 18:29:19
我有一个datagridview,其中datagridviewlink列绑定到我的对象列表中的文本链接。文本链接是指向文件的链接,文件被深深地埋在网络存储中,形成长链接。有没有什么方法可以更改链接列的链接显示值,使其仅显示每个完整链接的一部分?就是文件名本身?
我读过,您可以使用相同的标题文本作为链接列的显示值,但我想知道是否所有的显示值都可能不同。
总之,是否可以在链接列中显示文件链接的一部分,而我想显示的所有部分都会不同,并且仍然有指向完整文件路径的实际链接点?
想明白了。
不确定是否有更好的方法,但我向对象添加了链接的缩短版本,在dataGridView1_CellContentClick
事件中,我获取与行(dataGridView1.Rows[e.RowIndex].DataBoundItem)
关联的对象,并在返回的对象中的完全限定文件路径上调用System.Diagnostics.Process.Start()
。
我找到了更好的方法来实现这一点。
首先,在创建DataGridViewLinkColumn
集合UseColumnTextForLinkValue = false
时
将DataGridViewLinkColumn
的Text
属性设置为深埋在网络存储中的文件的完整路径。
现在,处理DataGridView
的CellFormatting
事件,并将单元格的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
}
}
要在点击链接时执行任何操作,您需要按照以下处理DataGridView
的CellContentClick
事件
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
}
}