how to create a link in gridview in asp.net

I am trying to create a webpage that has a gridview. this gridview is supposed to have a link like below

http://localhost/Test.aspx?code=123

when the user clicks one of the rows’ link in gridview, it will open a blank page and display some result.

here is how I bind data to the gridview but I dont know how to set the link

protected void Page_Load(object sender, EventArgs e)
{
    string firma_no = logoFrmNr.ToString().PadLeft(3, '0');
    string active_period = logoFrmPeriod.PadLeft(2, '0');

    SqlConnection conn = new SqlConnection(conStr);
    string selectSql = @"SELECT 
                                LOGICALREF,
                                CODE , 
                                DEFINITION_ ,
                                FROM 
                                LG_CLFLINE";

    SqlCommand cmd = new SqlCommand(selectSql, conn);
    DataTable dt = new DataTable();
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(dt);
    GridView1.DataSource = dt;
    GridView1.DataBind();

    conn.Close();
}

here is the markup

<asp:GridView ID="GridView1" runat="server" EnableModelValidation="True">
</asp:GridView>

How can I make a link out of CODE column?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

There’s a trick to this. The Hyperlinkcolumn won’t work, because you can’t format the link. You want to use a boundfield and format the text. Like so

<asp:GridView ID="GridView1" runat="server" EnableModelValidation="True">
    <Columns>
        <asp:BoundField DataField="Code" HtmlEncode="False" DataFormatString="<a target='_blank' href='Test.aspx?code={0}'>Link Text Goes here</a>" />
    </Columns>
</asp:GridView>

Alternately, you can use a templatefield if you need to designate edit and insert templates.

Method 2

Add this to your Columns definition in the markup for your grid view:

<asp:TemplateField HeaderText="Hyperlink">
    <ItemTemplate>
        <asp:HyperLink ID="HyperLink1" runat="server" 
            NavigateUrl='<%# Eval("CODE", @"http://localhost/Test.aspx?code={0}") %>' 
            Text='link to code'>
        </asp:HyperLink>
    </ItemTemplate>
</asp:TemplateField>

Method 3

to me it would be something like

<asp:DataGrid id="MyDataGrid" 
           GridLines="Both"
           AutoGenerateColumns="false"
           runat="server">

         <HeaderStyle BackColor="#aaaadd"/>

         <Columns>

            <asp:HyperLinkColumn
                 HeaderText="Select an Item"
                 DataNavigateUrlField="code"
                 DataNavigateUrlFormatString="http://localhost/Test.aspx?code={0}"
                 Target="_blank"/>

         </Columns>

      </asp:DataGrid>

Method 4

You should be able to use a HyperLinkColumn in your markup.

HyperlinkColumn Documentation


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x