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.