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

How to select a row based on column value

3 Answers 258 Views
Grid
This is a migrated thread and some comments may be shown as answers.
abhijeet
Top achievements
Rank 1
abhijeet asked on 03 Nov 2011, 04:42 AM
Hi, I have a radgrid placed in my page which has data pre-populated with data.
Now in my javascript I have to select a row from radgrid based on the data in the variable.
So it has to get the specific row which has that value.
I need to know if I can select a row from javascript.


For e.g. My grid has data like following

1, 2, 3 (Header)
------------
1,2,3 (Data)
4,2,3 (Data)


Now i want to select a row that has value 4 for column 1 which is actually a second row. Also what happens when paging is enabled in such cases?


3 Answers, 1 is accepted

Sort by
0
Jayesh Goyani
Top achievements
Rank 2
answered on 03 Nov 2011, 06:42 AM
Hello,


.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default12.aspx.cs" Inherits="Default12" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
    <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
        <script type="text/javascript">
            function SelectRowfn() {
 
                var grid = $find("<%=RadGrid1.ClientID %>");
 
                if (grid) {
                    var MasterTable = grid.get_masterTableView();
                    var Rows = MasterTable.get_dataItems();
                    for (var i = 0; i < Rows.length; i++) {
                        var row = Rows[i];
                        var firstcellvalue = row._element.cells[0].firstChild.nodeValue;
                        if (firstcellvalue == "4") {
                            row._element.style.backgroundColor = "Red";
                        }
                    }
 
                }
 
                grid.repaint();
            }
        </script>
    </telerik:RadCodeBlock>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
        </telerik:RadScriptManager>
        <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" OnNeedDataSource="RadGrid1_NeedDataSource">
            <MasterTableView>
                <Columns>
                    <telerik:GridBoundColumn DataField="ID1" HeaderText="ID1" UniqueName="ID1">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn DataField="ID2" HeaderText="ID2" UniqueName="ID2">
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn DataField="ID3" HeaderText="ID3" UniqueName="ID3">
                    </telerik:GridBoundColumn>
                </Columns>
            </MasterTableView>
        </telerik:RadGrid>
    </div>
    </form>
</body>
</html>

.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
 
public partial class Default12 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        RadGrid1.PreRender += new EventHandler(RadGrid1_PreRender);
    }
 
    void RadGrid1_PreRender(object sender, EventArgs e)
    {
        Page.ClientScript.RegisterStartupScript(this.GetType(), "test", " setTimeout('SelectRowfn()',100); ", true);
    }
    protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
    {
        dynamic data = new[] {
                new { ID1 = 1, ID2 = 2, ID3=3},
                new { ID1 = 4, ID2 = 5, ID3=6}
                
            };
        RadGrid1.DataSource = data;
 
         
    }
}


let me know if any concern.

Thanks,
Jayesh Goyani
0
abhijeet
Top achievements
Rank 1
answered on 07 Nov 2011, 04:27 AM
Thanks Jayesh for the support. Is there any other way to do this beside looping through each row? Thanks in advance.
0
Jayesh Goyani
Top achievements
Rank 2
answered on 07 Nov 2011, 05:04 AM
Hello abhijeet,

No, you have to do with looping.
Don't worry looping code works on client side so it not affect the performance.

Thanks,
Jayesh Goyani
Tags
Grid
Asked by
abhijeet
Top achievements
Rank 1
Answers by
Jayesh Goyani
Top achievements
Rank 2
abhijeet
Top achievements
Rank 1
Share this question
or