Hi,
I am loading a grid with data and attaching to the SelectedIndexChanged event. When the grid is loaded I want to select the first row and have the code in the SelectedIndexChanged handler run. The only way I can manage this is to explicitly call the handler.
My C# code is as follows:
and my HTML is:
Can anyone tell me what I need to change to get this to work without the need to call the handler directly?
Thanks,
David
I am loading a grid with data and attaching to the SelectedIndexChanged event. When the grid is loaded I want to select the first row and have the code in the SelectedIndexChanged handler run. The only way I can manage this is to explicitly call the handler.
My C# code is as follows:
protected
void
grdTicket_NeedDataSource(
object
source, GridNeedDataSourceEventArgs e)
{
DataSet ds =
new
DataSet();
DataTable dt =
new
DataTable();
dt.Columns.Add(
"UserId"
);
for
(
int
i = 0; i < 15; i++)
{
DataRow dr = dt.NewRow();
dr[
"UserId"
] =
"XYZ"
+ i.ToString();
dt.Rows.Add(dr);
}
ds.Tables.Add(dt);
grdTicket.DataSource = ds;
}
protected
void
grdTicket_PreRender(
object
sender, EventArgs e)
{
RadGrid grid = sender
as
RadGrid;
if
(grid.MasterTableView.Items.Count > 0)
{
if
(grid.SelectedIndexes.Count == 0)
{
//grid.SelectedIndexes.Add(0);
grid.MasterTableView.Items[0].Selected =
true
;
// This just feels dirty!!
// Why doesn't the event fire when I set the row's Selected property
grdTicket_SelectedIndexChanged(sender,
null
);
}
}
}
protected
void
grdTicket_SelectedIndexChanged(
object
sender, EventArgs e)
{
RadGrid grid = sender
as
RadGrid;
int
index = Convert.ToInt32(grid.SelectedIndexes[0]);
lblSelectedIndex.Text =
"Selected index = "
+ index;
}
and my HTML is:
<
asp:ScriptManager
ID
=
"ScriptManager1"
runat
=
"server"
>
</
asp:ScriptManager
>
<
telerik:RadGrid
ID
=
"grdTicket"
runat
=
"server"
AutoGenerateColumns
=
"false"
Width
=
"946px"
Font-Names
=
"Verdana"
Font-Size
=
"x-small"
EnableViewState
=
"true"
AllowSorting
=
"true"
AllowPaging
=
"true"
AllowMultiRowSelection
=
"false"
OnNeedDataSource
=
"grdTicket_NeedDataSource"
OnPreRender
=
"grdTicket_PreRender"
OnSelectedIndexChanged
=
"grdTicket_SelectedIndexChanged"
>
<
ClientSettings
EnablePostBackOnRowClick
=
"True"
>
<
Selecting
AllowRowSelect
=
"True"
/>
</
ClientSettings
>
<
MasterTableView
Width
=
"100%"
NoDetailRecordsText
=
"No Records To Display"
>
<
CommandItemSettings
ExportToPdfText
=
"Export to PDF"
></
CommandItemSettings
>
<
RowIndicatorColumn
FilterControlAltText
=
"Filter RowIndicator column"
>
</
RowIndicatorColumn
>
<
ExpandCollapseColumn
FilterControlAltText
=
"Filter ExpandColumn column"
>
</
ExpandCollapseColumn
>
<
Columns
>
<
telerik:GridBoundColumn
HeaderText
=
"User ID"
DataField
=
"UserId"
UniqueName
=
"UserID"
>
</
telerik:GridBoundColumn
>
</
Columns
>
<
EditFormSettings
>
<
EditColumn
FilterControlAltText
=
"Filter EditCommandColumn column"
>
</
EditColumn
>
</
EditFormSettings
>
</
MasterTableView
>
<
PagerStyle
Mode
=
"NextPrevNumericAndAdvanced"
ShowPagerText
=
"true"
/>
<
FilterMenu
EnableImageSprites
=
"False"
>
</
FilterMenu
>
<
HeaderContextMenu
CssClass
=
"GridContextMenu GridContextMenu_Default"
>
</
HeaderContextMenu
>
</
telerik:RadGrid
>
<
br
/>
<
asp:Label
runat
=
"server"
ID
=
"lblSelectedIndex"
/>
Can anyone tell me what I need to change to get this to work without the need to call the handler directly?
Thanks,
David