Hi All,
I have seen some posts on this already, but don't think the work arounds apply to what I am experiencing.
Basically, if I setup the datagrid with a server-side ItemCommand event, the ItemIndex is correct.
Adding in a client-side OnCommand event, however, makes the ItemIndex server-side always 0 (zero). Interestingly, the get_commandArgument returns the correct value within the OnGridCommand event (see example).
Why is this? See below for an example.
I am using the latest Telerik release with ASP.Net 40 (2010.3.1215.40).
Thanks for any insight.
Steele.
I have seen some posts on this already, but don't think the work arounds apply to what I am experiencing.
Basically, if I setup the datagrid with a server-side ItemCommand event, the ItemIndex is correct.
Adding in a client-side OnCommand event, however, makes the ItemIndex server-side always 0 (zero). Interestingly, the get_commandArgument returns the correct value within the OnGridCommand event (see example).
Why is this? See below for an example.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GridButtonIndex.aspx.cs" Inherits="TestTelerikWebApp.GridButtonIndex" %> <!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> </head> <body> <form id="form1" runat="server"> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> </telerik:RadScriptManager> <telerik:RadCodeBlock ID="RadCodeBlock1" runat="server"> <script type="text/javascript"> function OnGridCommand(sender, args) { var grid = sender; debugger; if (args.get_commandName() == "InitInsert" && grid._editIndexes[0] >= 0) { alert("Cannot add while editing a record."); args.set_cancel(true); } if (args.get_commandName() == "Delete") { if (grid._editIndexes[0] >= 0) { alert("Cannot delete while editing a record."); args.set_cancel(true); } else var value = confirm("Are you sure you want to delete?"); if (!value) args.set_cancel(true); } } </script> </telerik:RadCodeBlock> <div> <telerik:RadGrid ID="dgTest" runat="server" AutoGenerateColumns="False" GridLines="None" OnItemCommand="dgTest_ItemCommand" OnNeedDataSource="dgTest_NeedDataSource"> <ClientSettings> <ClientEvents OnCommand="OnGridCommand" /> </ClientSettings> <MasterTableView> <CommandItemSettings ExportToPdfText="Export to Pdf"></CommandItemSettings> <RowIndicatorColumn FilterControlAltText="Filter RowIndicator column"> <HeaderStyle Width="20px"></HeaderStyle> </RowIndicatorColumn> <ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column"> <HeaderStyle Width="20px"></HeaderStyle> </ExpandCollapseColumn> <Columns> <telerik:GridBoundColumn DataField="Description" FilterControlAltText="Filter colDesc column" HeaderText="Description" UniqueName="colDesc"> </telerik:GridBoundColumn> <telerik:GridButtonColumn ButtonType="PushButton" CommandName="TestClick" FilterControlAltText="Filter colButt column" Text="Press Me" UniqueName="colButt"> </telerik:GridButtonColumn> </Columns> <EditFormSettings> <EditColumn FilterControlAltText="Filter EditCommandColumn column"> </EditColumn> </EditFormSettings> </MasterTableView> <FilterMenu EnableImageSprites="False"> </FilterMenu> <HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default"> </HeaderContextMenu> </telerik:RadGrid> </div> <asp:Label ID="lblFeedback" runat="server"></asp:Label> <telerik:RadAjaxManager runat="server"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="dgTest"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="dgTest" /> <telerik:AjaxUpdatedControl ControlID="lblFeedback" /> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> </form> </body> </html> using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using Telerik.Web.UI; namespace TestTelerikWebApp { public partial class GridButtonIndex : System.Web.UI.Page { protected DataTable GetData() { DataTable dt = new DataTable(); dt.Columns.Add("Id", typeof(int)); dt.Columns.Add("Description", typeof(string)); DataRow dr = dt.NewRow(); dr["Id"] = 1; dr["Description"] = "Test 1"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Id"] = 2; dr["Description"] = "Test 2"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["Id"] = 3; dr["Description"] = "Test 3"; dt.Rows.Add(dr); return dt; } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { } } protected void dgTest_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) { RadGrid rg = (RadGrid)sender; rg.DataSource = GetData(); } protected void dgTest_ItemCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "TestClick") { GridEditableItem gei = (GridEditableItem)(e.Item); lblFeedback.Text = "Item Index is : " + gei.ItemIndex.ToString(); } } } }I am using the latest Telerik release with ASP.Net 40 (2010.3.1215.40).
Thanks for any insight.
Steele.