我有一个datagridview,它的datagridviewlinkcolumn绑定到我的对象列表中的一个文本链接。文本链接是指向文件的链接,文件被深埋在网络存储中,形成了长链接。有没有什么方法可以更改linkcolumn的链接显示值,使其只显示每个完整链接的一部分?只是文件名本身吗?
我已经了解到,您可以使用相同的标题文本作为链接列的显示值,但我想知道是否所有的显示值都可以不同。
总而言之,有没有可能在link列中显示文件链接的一部分,而我想要显示的所有部分都是不同的,并且仍然具有指向完整文件路径的实际链接?
发布于 2012-03-30 22:49:23
我想通了。
我不确定是否有更好的方法来做到这一点,但是我在我的对象中添加了链接的缩短版本,并且在我的dataGridView1_CellContentClick事件中,我获得了与行(dataGridView1.Rows[e.RowIndex].DataBoundItem)相关联的对象,并在返回的对象中的完全限定文件路径上调用System.Diagnostics.Process.Start()。
发布于 2017-12-12 19:25:00
我找到了一种更好的方法来实现这一点。
首先,在创建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
}
}https://stackoverflow.com/questions/9925944
复制相似问题