C# DataGridView
Как сделать 3 колонку (столбец) HyperLink, чтобы в ячейке была ссылка формата http://google.com, а не простого текста. Пробовал добавить в DataTable колонку dt.Columns.Add("Ссылка", typeof(DataGridViewLinkColumn)), но ничего не вышло
DataTable dt = new DataTable();
dt.Columns.Add("Продукт", typeof(string));
dt.Columns.Add("Цена", typeof(int));
dt.Columns.Add("Ссылка", typeof(string));
dt.Rows.Add("Какой-то продукт", 1000, "http://google.com");
dataGridView1.DataSource = dt;
Ответы (2 шт):
Автор решения: user389128
→ Ссылка
DataGridViewLinkColumn links = new DataGridViewLinkColumn();
dataGridView1.Columns.Add(links);
links.HeaderText = "YourLinks";
links.Name = "http://test.com";
links.Text = "test";
links.UseColumnTextForLinkValue = true;
Автор решения: frozencoast
→ Ссылка
Можно добавить событие DataBindingComplete для сетки, вызываемое после заполнения данными, в котором уже заменять ячейку в нужном столбце на ссылку:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
dataGridView1.DataBindingComplete += DataGridView1_DataBindingComplete;
DataTable dt = new DataTable();
dt.Columns.Add("Продукт", typeof(string));
dt.Columns.Add("Цена", typeof(int));
dt.Columns.Add("Ссылка", typeof(string));
dt.Rows.Add("Какой-то продукт", 1000, "http://google.com");
dataGridView1.DataSource = dt;
}
private void DataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
DataGridViewLinkCell linkCell = new DataGridViewLinkCell();
linkCell.Value = row.Cells[2].Value;
row.Cells[2] = linkCell;
}
}
}