繁体   English   中英

更改DataGridViewLinkColumn的显示值

[英]Change Display Value of DataGridViewLinkColumn

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

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

因此,总而言之,是否可以在linkcolumn中显示文件链接的一部分,而我要显示的所有部分都不同,并且仍然具有指向完整文件路径的实际链接?

我找到了一种更好的方法来实现这一目标。

首先,在创建DataGridViewLinkColumnUseColumnTextForLinkValue = false设置UseColumnTextForLinkValue = false

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

现在,处理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
        }
    }

弄清楚了。

不知道是否有更好的方法可以执行此操作,但是我在对象中添加了链接的简化版本,并且在我的dataGridView1_CellContentClick事件中,我获得了与行关联的对象(dataGridView1.Rows[e.RowIndex].DataBoundItem) ,然后在返回的对象中的标准文件路径上调用System.Diagnostics.Process.Start()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM