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

Get Row values in RadGrid?

5 Answers 2267 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Prasanth100
Top achievements
Rank 1
Prasanth100 asked on 02 Feb 2014, 05:23 PM
Hello Gurus,   

Here i have attached both GridView and RadGrid. Here getting the row values working in normal Gridview, but it is not working in RadGrid.

(i do not want to get it through through row click, when i click on the button it should be called.)


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type = "text/javascript">
function GetSelectedRow(lnk) {
var row = lnk.parentNode.parentNode;
var rowIndex = row.rowIndex - 1;
var customerId = row.cells[0].innerHTML;
var city = row.cells[1].getElementsByTagName("input")[0].value;
alert("RowIndex: " + rowIndex + " CustomerId: " + customerId + " City:" + city);
return false;
}
</script>
</head>
<body>
<form id="form1" runat="server"><asp:ScriptManager ID="Sc1" runat="server"></asp:ScriptManager><asp:GridView ID="gvCustomers" runat="server" AutoGenerateColumns = "false" AllowPaging = "true" OnPageIndexChanging = "PageIndexChanging">
<Columns>
<asp:BoundField DataField = "CustomerID" HeaderText = "CustomerID" />
<asp:TemplateField HeaderText = "City">
<ItemTemplate>
<asp:TextBox ID="txtCity" runat="server" Text = '<%# Eval("City") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkSelect" runat="server" Text="Select" CommandName = "Select" OnClientClick = "return GetSelectedRow(this)" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView><telerik:RadGrid ID="RadGrid1" runat="server" AllowPaging="false" Width="97%">

<PagerStyle Mode="NumericPages"></PagerStyle>
<MasterTableView AutoGenerateColumns="False"
Width="100%" CommandItemDisplay="Top" PageSize="5">
<Columns>

<telerik:GridTemplateColumn UniqueName="TemplateEditColumn">
<ItemTemplate>
<asp:TextBox ID="txtCity" runat="server" Text = '<%# Eval("City") %>'></asp:TextBox>
</ItemTemplate>
</telerik:GridTemplateColumn><telerik:GridTemplateColumn UniqueName="TemplateEditColumn">
<ItemTemplate>
<asp:LinkButton ID="lnkSelect" runat="server" Text="Select" CommandName = "Select" OnClientClick = "return GetSelectedRow(this)" />
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>

</MasterTableView>

</telerik:RadGrid></form>
</body>
</html>

In telerik:I tried this example,but it dont work.

http://www.telerik.com/help/aspnet-ajax/grid-getting-cell-values-for-selected-rows-client-side.html

Help with this.

Thanks in Advance.

5 Answers, 1 is accepted

Sort by
0
Accepted
Princy
Top achievements
Rank 2
answered on 03 Feb 2014, 04:10 AM
Hi Prasanth,

I tried your code and it works fine at my end. The only issue I noticed is that to the RadGrid you haven't added the CustomerID column. Please add that column and check if the issue exist:

ASPX:
<telerik:GridBoundColumn UniqueName="CustomerID" DataField="CustomerID" HeaderText="CustomerID">
</telerik:GridBoundColumn>

Thanks,
Princy
0
Prasanth100
Top achievements
Rank 1
answered on 03 Feb 2014, 07:17 PM
Hi Princy,
 
 That worked like charm.
Is it possible to get the values by hiding the customerID.
B'coz in my case CustomerID is Guid. (so i dont want to show that.)
If so,How to accomplish?

Thanks in Advance.
   Prasanth

0
Accepted
Princy
Top achievements
Rank 2
answered on 04 Feb 2014, 04:14 AM
Hi Prasanth,

You can set "CustomerID" as ClientDataKeyNames and access it in the clientside as follows:

ASPX:
<MasterTableView ClientDataKeyNames="CustomerID" >

JS:
<script type="text/javascript">
    function GetSelectedRow(lnk) {       
        var row = lnk.parentNode.parentNode;
        var rowIndex = row.rowIndex - 1;
        var grid = $find("<%= RadGrid1.ClientID %>");
        if (grid) {
         var MasterTable = grid.get_masterTableView();
         var data = MasterTable.get_dataItems();
         var rows = data[rowIndex - 1];
         var customerId = rows.getDataKeyValue("CustomerID"); //Access CustomerID using DataKeyValue
         var city = row.cells[1].getElementsByTagName("input")[0].value;
         alert("RowIndex: " + rowIndex + " CustomerId: " + customerId + " City:" + city);
        }
        return false;
    }
</script>

Thanks,
Princy
0
Hon EK
Top achievements
Rank 1
answered on 04 Feb 2014, 11:02 AM
Hello Guys,

Anybody who can assist me in acheving the same in ASP.NET with vb code
0
Princy
Top achievements
Rank 2
answered on 05 Feb 2014, 04:35 AM
Hi Hon EK,

I'm not clear about your requirement. The above code is to get the selected row details on LinkButton click in the Client-side. I guess you want to do this from the code behind. Please try the following code snippet and let me know if any concern:

ASPX:
<telerik:RadGrid ID="RadGrid1" runat="server"
    <MasterTableView DataKeyNames="CustomerID">
        <Columns>           
            <telerik:GridTemplateColumn UniqueName="CityTemplateColumn">
              <ItemTemplate>
               <asp:TextBox ID="txtCity" runat="server" Text='<%# Eval("ShipCity") %>'></asp:TextBox>
              </ItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridTemplateColumn UniqueName="LinkTemplateColumn">
              <ItemTemplate>
                <asp:LinkButton ID="lnkSelect" runat="server" Text="Select" CommandName="Select" OnClick="lnkSelect_Click" />                
              </ItemTemplate>
            </telerik:GridTemplateColumn>
        </Columns>
    </MasterTableView>
</telerik:RadGrid>

VB:
Protected Sub lnkSelect_Click(sender As Object, e As EventArgs)
   Dim lnk As LinkButton = DirectCast(sender, LinkButton)
   Dim data As GridDataItem = DirectCast(lnk.NamingContainer, GridDataItem)
   Dim CustmerId As String = data.GetDataKeyValue("CustomerID").ToString()
   Dim txt As TextBox = DirectCast(data.FindControl("txtCity"), TextBox)
   Dim City As String = txt.Text
End Sub

Thanks,
Princy
Tags
Grid
Asked by
Prasanth100
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Prasanth100
Top achievements
Rank 1
Hon EK
Top achievements
Rank 1
Share this question
or