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

Server-side row click event

4 Answers 2080 Views
Grid
This is a migrated thread and some comments may be shown as answers.
LG
Top achievements
Rank 2
LG asked on 29 Oct 2009, 09:28 PM
Is it possible to detect a server-side event when the user clicks on a datagrid row regardless of wherever on the row area the click happens?

I simply want to take the user to a separate .aspx page when the click occurs and pass the row ID / primary key to the second page.

Thanks

4 Answers, 1 is accepted

Sort by
0
Schlurk
Top achievements
Rank 2
answered on 29 Oct 2009, 09:40 PM
You could always subscribe to the OnRowClick client-side event and open the page with the following function:

function openWindow(pageName) 
    window.open(pageName); 

Although for passing your ID/Key you would probably have to use hidden fields. You could, alternatively, just subscribe to the OnRowClick event and then set hidden fields equal to the row ID  / primary keys and then open the page through the code-behind instead of javascript.
0
LG
Top achievements
Rank 2
answered on 29 Oct 2009, 10:27 PM
Thanks for your reply but I'm trying to avoid the client-side approach, if I can.

With the following properties the RadGrid is able to highlight the entire row when I click on it. Why it doesn't trigger a server-side event?

<ClientSettings> 
    <Selecting AllowRowSelect="True" />   
</ClientSettings> 
 
<SelectedItemStyle BackColor="Fuchsia" BorderColor="Purple" BorderStyle="Dashed" BorderWidth="1px" /> 
 

 

 
It seems like we are half way there.

0
Princy
Top achievements
Rank 2
answered on 30 Oct 2009, 06:20 AM

Hi RJ,

You can set the EnablePostBackOnRowClick property  to  true to trigger a postback on clicking a row .

 

<ClientSettings EnablePostBackOnRowClick="true">  
<Selecting AllowRowSelect="true" /> 
</ClientSettings>   
 

You can check for this in the ItemCommand

 

 protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)  
    {  
        if (e.CommandName == "RowClick")  
        {  
 
        }  
    }   
 

Thanks,
Princy

0
LG
Top achievements
Rank 2
answered on 30 Oct 2009, 04:43 PM
Thanks, Princy!! This is exactly what I was looking for.

Here is the complete solution for others:

<telerik:RadGrid ShowGroupPanel="false" AutoGenerateColumns="false"  
    ID="RadGrid1" runat="server" AllowMultiRowSelection="false"  
    Height="578px" Width="99%"  
    ShowFooter="False" onitemcommand="RadGrid1_ItemCommand"
    <PagerStyle Mode="NumericPages" /> 
    <MasterTableView TableLayout="Fixed"
        <Columns> 
            <telerik:GridBoundColumn HeaderText="RowID" DataField="RowID" UniqueName="RowID" Visible="false"
            </telerik:GridBoundColumn>  
            
            ..... 
 
        </Columns> 
    </MasterTableView>                 
    <ClientSettings EnablePostBackOnRowClick="true"
        <Scrolling AllowScroll="true" UseStaticHeaders="true"></Scrolling> 
        <Selecting AllowRowSelect="True" />                     
    </ClientSettings> 
</telerik:RadGrid> 


protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e) 
 
    switch (e.CommandName) 
    { 
        case "RowClick": 
            GridDataItem dataItem = e.Item as GridDataItem; 
            Response.Redirect("~/Detail.aspx?id=" + dataItem["ColumnUniqueName"].Text); 
            break; 
        default: 
            break; 
    } 
 

RJ
Tags
Grid
Asked by
LG
Top achievements
Rank 2
Answers by
Schlurk
Top achievements
Rank 2
LG
Top achievements
Rank 2
Princy
Top achievements
Rank 2
Share this question
or