This is a migrated thread and some comments may be shown as answers.

Add primary key value to a HyperLinkColumn NavigateUrl property

5 Answers 298 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Robert
Top achievements
Rank 1
Robert asked on 09 Oct 2012, 08:52 AM
Hello,

I have a hyperlinkcolumn in my grid. I want the NavigateUrl property to contain the primary key value for each row like so:

page.aspx?key=value

How do i accomplish this in code behind?

Thanks

5 Answers, 1 is accepted

Sort by
0
Accepted
Princy
Top achievements
Rank 2
answered on 09 Oct 2012, 09:02 AM
Hi,

Try the following code to pass the key value.
C#:
protected void RadGrid2_ItemDataBound(object sender, GridItemEventArgs e)
{
  if (e.Item is GridDataItem)
  {
  GridDataItem item = (GridDataItem)e.Item;
 HyperLink link = (HyperLink)item["UniqueName"].Controls[0];
 string value = item.GetDataKeyValue("ID").ToString();
 link.NavigateUrl = "Page.aspx?key=" + value;
  }
}

Thanks,
Princy.
0
Robert
Top achievements
Rank 1
answered on 09 Oct 2012, 09:17 AM
Prefect, thanks a bunch!
0
Muhammad
Top achievements
Rank 1
answered on 03 Jul 2013, 09:37 AM
Hi,

I'm having a similar issue. I'm using Telerik RadGrid in Asp.Net MVC pattern. I tried the above code behind but error occurring at 

string value = item.GetDataKeyValue("ID").ToString();

of type System.NullReference Exception. Complete code is as follows:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<WeBOC.DAL.Vessel>>" %>
 
<%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI" tagprefix="telerik" %>
<script runat="server">
 
    protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
    {
        RadGrid1.DataSource = ViewData["Vessels"];
    }
 
    protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridDataItem)
        {
            GridDataItem item = (GridDataItem)e.Item;
            HyperLink link = (HyperLink)item["VirColumn"].Controls[0];
            string value = item.GetDataKeyValue("ID").ToString();
            link.NavigateUrl = Url.Action("Inspector", "Vessel", value);
        }
         
    }
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Index
</asp:Content>
 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
 
    <form id="form3">
    
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
                <AjaxSettings>
                    <telerik:AjaxSetting AjaxControlID="RadGrid1">
                        <UpdatedControls>
                            <telerik:AjaxUpdatedControl ControlID="RadGrid1" />
                        </UpdatedControls>
                    </telerik:AjaxSetting>
                </AjaxSettings>
            </telerik:RadAjaxManager>
 
    <h2>Vessels<telerik:RadScriptManager ID="RadScriptManager1" Runat="server">
        </telerik:RadScriptManager>
    </h2>
     
    <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="False"
        CellSpacing="0" GridLines="None" Skin="WebBlue"
        onneeddatasource="RadGrid1_NeedDataSource" AllowPaging="True"
        PagerStyle-Mode="NextPrevNumericAndAdvanced" onitemdatabound="RadGrid1_ItemDataBound"
        >
        <MasterTableView>
<CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings>
 
<RowIndicatorColumn Visible="True" FilterControlAltText="Filter RowIndicator column"></RowIndicatorColumn>
 
<ExpandCollapseColumn Visible="True" FilterControlAltText="Filter ExpandColumn column"></ExpandCollapseColumn>
            <Columns>               
                <telerik:GridBoundColumn DataField="INBOUND_VOY_NO" HeaderText="I/B Voyage" />
                <telerik:GridBoundColumn DataField="OUTBOUND_VOY_NO" HeaderText="O/B Voyage" />
                <telerik:GridBoundColumn DataField="VESSEL_NAME" HeaderText="Vessel Name" />
                <telerik:GridBoundColumn DataField="ARRIVAL_DATE" HeaderText="Arrived" />
                <telerik:GridBoundColumn DataField="STATE" HeaderText="Phase" />                               
                <telerik:GridHyperLinkColumn AllowSorting="False" DataNavigateUrlFields ="ID" DataTextField = "VIR_NO"
                    FilterControlAltText="Filter column column" UniqueName="VirColumn">
                </telerik:GridHyperLinkColumn>
            </Columns>
             
 
<EditFormSettings>
<EditColumn FilterControlAltText="Filter EditCommandColumn column"></EditColumn>
</EditFormSettings>
 
<PagerStyle PageSizeControlType="RadComboBox"></PagerStyle>
        </MasterTableView>
 
<PagerStyle PageSizeControlType="RadComboBox"></PagerStyle>
 
<FilterMenu EnableImageSprites="False"></FilterMenu>
 
    </telerik:RadGrid>
 
     
    </form>
 
</asp:Content>


Any help will be highly appreciated.

Thanks
Ovais
0
Muhammad
Top achievements
Rank 1
answered on 03 Jul 2013, 09:48 AM
Hi all,

I have found a solution without using code behind. Here is the chunk of code that i corrected:

<Columns>          
                <telerik:GridTemplateColumn FilterControlAltText="Filter TemplateColumn column" UniqueName="VIRTemplate">
                    <ItemTemplate>
                        <asp:HyperLink ID="HyperLink1" runat="server" Text='<%# Eval("VIR_NO") %>' NavigateUrl='<%# Url.Action("Inspector", "Vessel", new{id=Eval("VSSL_CALL_ID")}) %>' />                           
                    </ItemTemplate>
                </telerik:GridTemplateColumn>    
                <telerik:GridBoundColumn DataField="INBOUND_VOY_NO" HeaderText="I/B Voyage" />
                <telerik:GridBoundColumn DataField="OUTBOUND_VOY_NO" HeaderText="O/B Voyage" />
                <telerik:GridBoundColumn DataField="VESSEL_NAME" HeaderText="Vessel Name" />
                <telerik:GridBoundColumn DataField="ARRIVAL_DATE" HeaderText="Arrived" />
                <telerik:GridBoundColumn DataField="STATE" HeaderText="Phase" />                               
                <telerik:GridHyperLinkColumn AllowSorting="False" DataNavigateUrlFields ="VSSL_CALL_ID" DataTextField = "VIR_NO"
                    FilterControlAltText="Filter column column" UniqueName="VirColumn">
                </telerik:GridHyperLinkColumn>
            </Columns>
0
Princy
Top achievements
Rank 2
answered on 03 Jul 2013, 09:57 AM
Hi ,

The following error occurred because you haven't set the DataKeyNames value property in the mastertableview for the radgrid.

ASPX:
<MasterTableView DataKeyNames="ID">

Thanks,
Princy
Tags
Grid
Asked by
Robert
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Robert
Top achievements
Rank 1
Muhammad
Top achievements
Rank 1
Share this question
or