更改DataGridViewLinkColumn的显示值

本文关键字:显示 DataGridViewLinkColumn 更改 | 更新日期: 2023-09-27 18:29:19

我有一个datagridview,其中datagridviewlink列绑定到我的对象列表中的文本链接。文本链接是指向文件的链接,文件被深深地埋在网络存储中,形成长链接。有没有什么方法可以更改链接列的链接显示值,使其仅显示每个完整链接的一部分?就是文件名本身?

我读过,您可以使用相同的标题文本作为链接列的显示值,但我想知道是否所有的显示值都可能不同。

总之,是否可以在链接列中显示文件链接的一部分,而我想显示的所有部分都会不同,并且仍然有指向完整文件路径的实际链接点?

更改DataGridViewLinkColumn的显示值

想明白了。

不确定是否有更好的方法,但我向对象添加了链接的缩短版本,在dataGridView1_CellContentClick事件中,我获取与行(dataGridView1.Rows[e.RowIndex].DataBoundItem)关联的对象,并在返回的对象中的完全限定文件路径上调用System.Diagnostics.Process.Start()

我找到了更好的方法来实现这一点。

首先,在创建DataGridViewLinkColumn集合UseColumnTextForLinkValue = false

DataGridViewLinkColumnText属性设置为深埋在网络存储中的文件的完整路径

现在,处理DataGridViewCellFormatting事件,并将单元格的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
        }
    }

要在点击链接时执行任何操作,您需要按照以下处理DataGridViewCellContentClick事件

    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
        }
    }