Add hyperlink to GridView programmatically
GridView is a powerful and easy in use tool in Asp.net, especially if you know how to use it. There are a lot of tutorials how to add dynamic hyperlink column to GridView not programmatically, but this tutorial is about how to add hyperlink to GridView programmatically (in code-behind).
Initial data:
You have a class CEvent and collection List<CEvent>:
public class CEvent
{
public int eventId { get; set; }
public string title { get; set; }
public string reference { get; set; }
public string company { get; set; }
}
And you want to have a column in your GridView with a hyperlink of this format:
<a href="corpevent.aspx?evid=103&company=MyComp">MyComp</a>
Solution:
In a lot of tutorials it’s written how to add hyperlink column in GridView control via designer in .aspx page. They look somehow like this:
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:BoundField DataField="eventId" />
<asp:HyperLinkField DataNavigateUrlFields="eventId, company" DataNavigateUrlFormatString="WebForm1.aspx?eventId={0}&company={1}" />
</Columns>
</asp:GridView>
It’s a good way. But there are a lot of cases, when you have to write GridView properties and add columns from code-behind. It wasn’t very easy for me at first.
I’ve decided to describe HyperLinkField equivalent to .aspx syntax:
gv.Columns.Add(new HyperLinkField()
{
DataNavigateUrlFields = "eventId, company",
DataNavigateUrlFormatString = "corpevents.aspx?evid={0}&company={1}",
HeaderText = "Open"
});
But I’ve got this error:
Error 2 Cannot implicitly convert type 'string' to 'string[]'
The reason is that value for "DataNavigateUrlFields" must be a string array, that’s why I had to change some code. One of correct ways to add hyperlink to GridView programmatically is below:
string[] dataNavigateUrlStrings = { "eventId", "company" };
gv.Columns.Add(new HyperLinkField()
{
DataNavigateUrlFields = dataNavigateUrlStrings,
DataNavigateUrlFormatString = "corpevents.aspx?evid={0}&company={1}",
Text = "Open",
HeaderText = "Link"
});

Pipeline sequence in PowerShell