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

RadGrid OnSortCommand event triggered by Enter Key

1 Answer 173 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Don
Top achievements
Rank 1
Don asked on 20 Aug 2015, 07:19 PM

Hi there,

The OnItemCommand, OnSortCommand got triggered unexpectly when pressing enter key in a textbox. Here is my scenario:

1 Click in ​a textbox below a RadGrid.

2 Press Enter key, OnItemCommand, OnSortCommand wil be triggered.

However,  as soon as I remove the HeaderImageUrl property in telerik:GridTemplateColumn, everything works perfectly.

Please see the demo code below:

TestEnterKey.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestEnterKey.aspx.cs" Inherits="TestEnterKey" %>
<!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>
</head>
<body>
    <form id="form1" runat="server">
        <div style="margin-bottom:20px;">
            <asp:scriptmanager id="ScriptManager1" runat="server">
            </asp:scriptmanager>
            <telerik:RadGrid ID="RadGrid1" runat="server" AllowPaging="True" CellSpacing="0" AllowSorting="True" OnItemCommand="grid_RowCommand"  OnSortCommand="grid_SortCommand"
                GridLines="None" Width="800px" AllowFilteringByColumn="true" EnableLinqExpressions="false" AutoGenerateColumns="false" OnNeedDataSource="RadGrid1_NeedDataSource" ShowFooter="True">
                <MasterTableView AutoGenerateColumns="false" EditMode="InPlace" AllowFilteringByColumn="true"
                ShowFooter="True" TableLayout="Auto">
                    <Columns>
                        <telerik:GridTemplateColumn DataField="Freight"  HeaderText="Freight" SortExpression="Freight" HeaderImageUrl="~/images/datePickerPopup.png" AutoPostBackOnFilter="true" CurrentFilterFunction="GreaterThanOrEqualTo"
                            ShowFilterIcon="false">
                                <ItemTemplate>
                                    <asp:LinkButton ID="lbl_freight" runat="server" Text='<%#Eval("Freight")%>' Visible="true"/>
                                </ItemTemplate>
                        </telerik:GridTemplateColumn>
                        <telerik:GridTemplateColumn DataField="ShipName" HeaderText="Ship Name" SortExpression="ShipName" AutoPostBackOnFilter="true" CurrentFilterFunction="Contains"
                        ShowFilterIcon="false">
                            <ItemTemplate>
                                <asp:LinkButton ID="lbl_name" runat="server" Text='<%#Eval("ShipName")%>' Visible="true"/>
                            </ItemTemplate>
                       </telerik:GridTemplateColumn>
                 </Columns>
                </MasterTableView>
            </telerik:RadGrid>
        </div>
        <asp:TextBox ID="tb_componentname" TextMode="SingleLine" MaxLength="250" runat="server" CssClass="STD"></asp:TextBox>
    </form>
</body>
</html>

 

TestEnterKey.aspx.cs:

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Text;
using System.Configuration;
using System.Collections.Generic;
using System.Web.Security;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using Telerik.Web.UI;
 
 
public partial class TestEnterKey : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
 
    }
 
    public class MyOrder
    {
        public int OrderID { get; set; }
        public DateTime OrderDate { get; set; }
        public double Freight { get; set; }
        public string ShipName { get; set; }
        public string ShipCountry { get; set; }
    }
 
    protected void grid_RowCommand(object sender, GridCommandEventArgs e) 
    {
    }
 
    protected void grid_SortCommand(object source, GridSortCommandEventArgs e)
    {
    }
 
    protected void RadGrid1_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
    {
        LoadData();
    }
 
    private void LoadData()
    {
        MyOrder _order1 = new MyOrder();
        _order1.OrderID = 1;
        _order1.OrderDate = new DateTime(2014, 1, 18);
        _order1.Freight = 15.61;
        _order1.ShipCountry = "Canada";
        _order1.ShipName = "David";
 
        MyOrder _order2 = new MyOrder();
        _order2.OrderID = 2;
        _order2.OrderDate = new DateTime(2015, 9, 12);
        _order2.Freight = 12.39;
        _order2.ShipCountry = "US";
        _order2.ShipName = "Jack";
 
        MyOrder _order3 = new MyOrder();
        _order3.OrderID = 3;
        _order3.OrderDate = new DateTime(2015, 6, 2);
        _order3.Freight = 6.81;
        _order3.ShipCountry = "Mexico";
        _order3.ShipName = "Howard";
 
        MyOrder _order4 = new MyOrder();
        _order4.OrderID = 4;
        _order4.OrderDate = new DateTime(2014, 3, 26);
        _order4.Freight = 19.92;
        _order4.ShipCountry = "Canada";
        _order4.ShipName = "William";
 
        MyOrder _order5 = new MyOrder();
        _order5.OrderID = 5;
        _order5.OrderDate = new DateTime(2015, 5, 15);
        _order5.Freight = 9.96;
        _order5.ShipCountry = "US";
        _order5.ShipName = "Don";
 
        List<MyOrder> _myList = new List<MyOrder>();
        _myList.Add(_order1);
        _myList.Add(_order2);
        _myList.Add(_order3);
        _myList.Add(_order4);
        _myList.Add(_order5);
 
        RadGrid1.DataSource = _myList;
    }
}

Any help is much appreciated!

1 Answer, 1 is accepted

Sort by
0
Eyup
Telerik team
answered on 24 Aug 2015, 08:41 AM
Hello Don,

Please note that when there is no defaultbutton defined for the current form or container Panel, browsers automatically assign the first closest submit control as the default button for the input elements on the page. To resolve this issue, you can place the following code snippet at the top of your page within the form tag:

<div style="display: none;">
    <asp:Button ID="HiddenButtonID" runat="server" Text="Button"
        OnClientClick="return false;" />
</div>

That should do the trick. Please give it a try and let me know if it works for you.

Regards,
Eyup
Telerik
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
Tags
Grid
Asked by
Don
Top achievements
Rank 1
Answers by
Eyup
Telerik team
Share this question
or