how to create a link in gridview in asp.net

54,402

Solution 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.

Solution 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>

Solution 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>

Solution 4

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

HyperlinkColumn Documentation

Share:
54,402
Arif YILMAZ
Author by

Arif YILMAZ

c#, mvc, web api, sql, t-sql, html5, jquery, css, angularjs

Updated on November 06, 2020

Comments

  • Arif YILMAZ
    Arif YILMAZ over 3 years

    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?

  • Pilgerstorfer Franz
    Pilgerstorfer Franz over 10 years
    Please provide a working example (eg: including code) - link only answers are not allowed as of FAQ.
  • Arif YILMAZ
    Arif YILMAZ over 10 years
    where should I add this code? please tell me where I should put this code?
  • Karl Anderson
    Karl Anderson over 10 years
    @Smeegs - you can use a HyperLink control inside of a TemplateField and format the URL for navigation, see my answer.
  • Smeegs
    Smeegs over 10 years
    I know, I mention that in my answer. But, unless you're handling an edit and an insert template. That's overkill to get the same result.
  • Karl Anderson
    Karl Anderson over 10 years
    @Smeegs - completely disagree that a TemplateField is overkill unless you are doing an edit or an insert template, it is extremely useful for handling the data binding event (OnRowBound) so that you can find the control by ID instead of relying on cell index, because BoundFields do not have an ID attribute.
  • Smeegs
    Smeegs over 10 years
    Surprisingly, the DataNavigateUrlFormatString doesn't work like that. I wish it did, but it's used to format numerical values. msdn.microsoft.com/en-us/library/…
  • Smeegs
    Smeegs over 10 years
    @KarlAnderson It really depends on how you want to use the column. I completely agree with your example. In that scenario TemplateField is not overkill, it's completely necessary. But, in this scenario, the poster just wants to render a hyperlink. For the requested functionality creating an entire template compared to formatting a string is overkill.
  • Karl Anderson
    Karl Anderson over 10 years
    @Smeegs - +1 agreed, as long as the OP got the answer they wanted, that is what matters. :-)
  • Smeegs
    Smeegs over 10 years
    @KarlAnderson Cheers :)
  • Smeegs
    Smeegs over 10 years
    My mistake. I was thinking of something else.
  • Georgios
    Georgios about 8 years
    I am confused about the link. I have the same issue and I do not know what link should I place. Please help me
  • Bbb
    Bbb over 5 years
    Here is how I got just the link text only in gridview, which has dynamic text that can't be hard coded as the example above shows <asp:BoundField DataField="link" HeaderText="link" ReadOnly="True" htmlencode="false" DataFormatString="<a target='{0}' href='{0}'>{0}</a>" />