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;
        }
    }
}
→ Ссылка