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

[Solved] Selected Items Not returning to server side when OnCommand client side function assigned

4 Answers 162 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Gavin
Top achievements
Rank 1
Gavin asked on 21 Aug 2009, 05:35 AM

Hi,

I have a RadGrid that has a GridClientSelectColumn to allow user to select one or more rows for processing on the server side. The problem I am having is that when I attach an oncommand client side function to the grid the selected rows stop returning to the server side.

The OnCommand function (See Below) intercepts the edit command and opens a new page with the details.

I am using RadControls for ASPNET AJAX Q3 2008.

cheers

Gavin

Grid

<telerik:RadGrid ID="rgExceptions" runat="server" AllowFilteringByColumn="True" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" GridLines="None" Skin="Telerik" OnNeedDataSource="rgExceptions_NeedDataSource" AllowMultiRowSelection="True">  
                <HeaderContextMenu EnableTheming="True" Skin="Telerik">  
                    <CollapseAnimation Duration="200" Type="OutQuint" />  
                </HeaderContextMenu>  
                <MasterTableView EditMode="InPlace">  
                    <RowIndicatorColumn>  
                        <HeaderStyle Width="20px" />  
                    </RowIndicatorColumn>  
                    <ExpandCollapseColumn>  
                        <HeaderStyle Width="20px" />  
                    </ExpandCollapseColumn>  
                    <Columns>  
                        <telerik:GridClientSelectColumn UniqueName="select">  
                        </telerik:GridClientSelectColumn>  
                        <telerik:GridBoundColumn UniqueName="id" DataField="id" HeaderText="#" AllowFiltering="False"></telerik:GridBoundColumn>  
                        <telerik:GridBoundColumn HeaderText="UR #" UniqueName="RefNo" DataField="RefNo">  
                        </telerik:GridBoundColumn>  
                        <telerik:GridBoundColumn HeaderText="Site Link" UniqueName="Sitelink" DataField="Sitelink">  
                        </telerik:GridBoundColumn>  
                        <telerik:GridBoundColumn HeaderText="Name" UniqueName="Name" DataField="Name">  
                        </telerik:GridBoundColumn>  
                        <telerik:GridBoundColumn HeaderText="Date of Birth" UniqueName="DOB" DataField="DOB">  
                        </telerik:GridBoundColumn>  
                        <telerik:GridBoundColumn HeaderText="Address" UniqueName="Address" DataField="Address">  
                        </telerik:GridBoundColumn>  
                        <telerik:GridBoundColumn HeaderText="Possible Match Count" UniqueName="PossibleMatchCount" DataField="PossibleMatchCount">  
                        </telerik:GridBoundColumn>  
                        <telerik:GridEditCommandColumn EditText="Details">  
                        </telerik:GridEditCommandColumn>  
                    </Columns>  
                    <PagerStyle AlwaysVisible="True" Mode="NextPrevNumericAndAdvanced" />  
                    <EditFormSettings>  
                        <EditColumn EditText="Details" UniqueName="EditCommandColumn1">  
                        </EditColumn>  
                        <PopUpSettings Height="450px" Modal="True" Width="750px" />  
                    </EditFormSettings>  
                </MasterTableView>  
                <FilterMenu EnableTheming="True" Skin="Telerik">  
                    <CollapseAnimation Duration="200" Type="OutQuint" />  
                </FilterMenu>  
                <ClientSettings>  
                    <Selecting AllowRowSelect="True" EnableDragToSelectRows="False" />  
                    <ClientEvents OnCommand="OnCommand" />  
                </ClientSettings>  
            </telerik:RadGrid> 

Javascript

function OnCommand(sender, args)  
{  
  var cmd = args.get_commandName();  
  if (cmd == "Edit")  
  {  
    args.set_cancel(true);  
    var grid = $find("<%= rgExceptions.ClientID%>");  
    var MasterTable = grid.get_masterTableView();  
    var row = MasterTable.get_dataItems()[args.get_commandArgument()];  
    var res = MasterTable.getCellByColumnUniqueName(row, "id").innerHTML;  
    window.open("UploadExceptionDetails.aspx?id=" + res);  
  }  

4 Answers, 1 is accepted

Sort by
0
Tsvetoslav
Telerik team
answered on 21 Aug 2009, 09:50 AM
Hello Gavin,

I could not reproduce the issue at hand - please, take a look at the attached sample.

I hope this helps.

Regards,
Tsvetoslav
the Telerik team

Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
0
Gavin
Top achievements
Rank 1
answered on 24 Aug 2009, 12:47 AM
Hi Tsvetoslav,

I have had a look at the sample code you provided and it seems to be using a different version on the Telerik controls than I am using.

I have managed to reproduce the issue in a simple project using "RadControls for ASPNET AJAX Q3 2008" (2008.3.1125.20) and Visual Studio 2005.

The project as an ASP.NET AJAX-Enabled Web Application (web project not web site).

As before when I don't bind the client side OnCommand I get the selected items and when I do the selected items fail to appear on the linkbutton click event.

Thanks
Gavin.

Code as follows.
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="GridTest._Default" %> 
 
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> 
 
<!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>Untitled Page</title> 
    <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">  
        <script type="text/javascript">  
            function OnCommand(sender, args)  
            {  
                var cmd = args.get_commandName();  
                if (cmd == "Edit")  
                {  
                    args.set_cancel(true);  
                    var grid = $find("<%= RadGrid1.ClientID%>");  
                    var MasterTable = grid.get_masterTableView();  
                    var row = MasterTable.get_dataItems()[args.get_commandArgument()];  
                    var res = MasterTable.getCellByColumnUniqueName(row, "name").innerHTML;  
                    alert(res);  
                }  
            }  
              
            function Callback()  
            {  
                window.location = "UploadExceptions.aspx";  
            }  
        </script> 
    </telerik:RadScriptBlock> 
</head> 
<body> 
    <form id="form1" runat="server">  
        <asp:ScriptManager ID="ScriptManager1" runat="server" /> 
    <div> 
            <telerik:RadGrid ID="RadGrid1" runat="server" AllowFilteringByColumn="True" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" GridLines="None" OnNeedDataSource="RadGrid1_NeedDataSource" AllowMultiRowSelection="True">  
                <HeaderContextMenu EnableTheming="True">  
                    <CollapseAnimation Duration="200" Type="OutQuint" /> 
                </HeaderContextMenu> 
                <MasterTableView> 
                    <RowIndicatorColumn> 
                        <HeaderStyle Width="20px" /> 
                    </RowIndicatorColumn> 
                    <ExpandCollapseColumn> 
                        <HeaderStyle Width="20px" /> 
                    </ExpandCollapseColumn> 
                    <Columns> 
                        <telerik:GridClientSelectColumn UniqueName="column"></telerik:GridClientSelectColumn> 
                        <telerik:GridBoundColumn UniqueName="name" DataField="name">  
                        </telerik:GridBoundColumn> 
                        <telerik:GridEditCommandColumn> 
                        </telerik:GridEditCommandColumn> 
                    </Columns> 
                    <EditFormSettings> 
                        <EditColumn UniqueName="EditCommandColumn1">  
                        </EditColumn> 
                    </EditFormSettings> 
                </MasterTableView> 
                <ClientSettings> 
                    <Selecting AllowRowSelect="True" /> 
                    <ClientEvents OnCommand="OnCommand" /> 
                </ClientSettings> 
                <FilterMenu EnableTheming="True">  
                    <CollapseAnimation Duration="200" Type="OutQuint" /> 
                </FilterMenu> 
            </telerik:RadGrid> 
            <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">Process Selected Rows</asp:LinkButton> 
            <asp:Label ID="Label1" runat="server"></asp:Label></div>  
    </form> 
</body> 
</html> 

Default.aspx.cs
using System;  
using System.Data;  
using System.Configuration;  
using System.Collections;  
using System.Web;  
using System.Web.Security;  
using System.Web.UI;  
using System.Web.UI.WebControls;  
using System.Web.UI.WebControls.WebParts;  
using System.Web.UI.HtmlControls;  
using Telerik.Web.UI;  
 
namespace GridTest  
{  
    public partial class _Default : System.Web.UI.Page  
    {  
        protected void Page_Load(object sender, EventArgs e)  
        {  
            Label1.Text = "";  
            if (!IsPostBack)  
            {  
                DataTable dt = new DataTable();  
                dt.Columns.Add("name"typeof(string));  
                DataRow r = dt.NewRow();  
                r["name"] = "row one";  
                dt.Rows.Add(r);  
 
                r = dt.NewRow();  
                r["name"] = "row two";  
                dt.Rows.Add(r);  
 
                r = dt.NewRow();  
                r["name"] = "row three";  
                dt.Rows.Add(r);  
                  
                Session["data"] = dt;  
            }  
        }  
 
        protected void RadGrid1_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)  
        {  
            RadGrid1.DataSource = Session["data"];  
        }  
 
        protected void LinkButton1_Click(object sender, EventArgs e)  
        {  
              
            foreach (GridDataItem itm in RadGrid1.Items)  
            {  
                if (itm.Selected)  
                {  
                    Label1.Text = "at least one item selected";  
                }  
            }  
        }  
    }  
}  
 
0
Tsvetoslav
Telerik team
answered on 24 Aug 2009, 01:34 PM
Hi Gavin,

You are correct the problem is reproducible with that previous version. As from version 2009.1.402 - the issue has been fixed, therefore you just need to upgrade to that or at best to the newest one.

I hope this information helps.

Greetings,
Tsvetoslav
the Telerik team

Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
0
Gavin
Top achievements
Rank 1
answered on 26 Aug 2009, 01:30 AM

Thanks Tsvetoslav,

I have replaced the edit column with a template column containing a hyperlink.

cheers

Gavin.

Tags
Grid
Asked by
Gavin
Top achievements
Rank 1
Answers by
Tsvetoslav
Telerik team
Gavin
Top achievements
Rank 1
Share this question
or