I have a GridDropDownColumn in RadGrid. I have added SelectedIndexChanged method on it in edit mode. Whenever this method is triggered, the column text becomes blank in the grid (for all rows except the one which is being edited).
I used the following in ItemCreated method:
rComboBox.AutoPostBack = true;
rComboBox.SelectedIndexChanged += MyComboBox_SelectedIndexChanged;
My GridDropDownColumn looks like:
<telerik:GridDropDownColumn DataField="MYDROPDOWNCOLUMN" DropDownControlType="RadComboBox"
HeaderText="Market Factor" ListTextField="MYDROPDOWNCOLUMN" ListValueField="MYDROPDOWNCOLUMN"
UniqueName="MYDROPDOWNCOLUMN" EnableEmptyListItem="true"
EmptyListItemText="--Choose an option--" EmptyListItemValue="">
</telerik:GridDropDownColumn>
I used the following in ItemCreated method:
rComboBox.AutoPostBack = true;
rComboBox.SelectedIndexChanged += MyComboBox_SelectedIndexChanged;
My GridDropDownColumn looks like:
<telerik:GridDropDownColumn DataField="MYDROPDOWNCOLUMN" DropDownControlType="RadComboBox"
HeaderText="Market Factor" ListTextField="MYDROPDOWNCOLUMN" ListValueField="MYDROPDOWNCOLUMN"
UniqueName="MYDROPDOWNCOLUMN" EnableEmptyListItem="true"
EmptyListItemText="--Choose an option--" EmptyListItemValue="">
</telerik:GridDropDownColumn>
5 Answers, 1 is accepted
0

Princy
Top achievements
Rank 2
answered on 20 Feb 2014, 09:23 AM
Hi Vikas,
Please try the following code snippet.
C#:
Thanks,
Princy
Please try the following code snippet.
C#:
protected
void
RadGrid1_ItemCreated(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridEditableItem && e.Item.IsInEditMode)
{
GridEditFormItem edititemForCombo = (GridEditFormItem)e.Item;
GridEditManager editMan = edititemForCombo.EditManager;
GridDropDownListColumnEditor editor = (GridDropDownListColumnEditor)(editMan.GetColumnEditor(
"ShipCountry"
));
RadComboBox radCombo = editor.ComboBoxControl;
radCombo.AutoPostBack =
true
;
radCombo.SelectedIndexChanged +=
new
RadComboBoxSelectedIndexChangedEventHandler(radCombo_SelectedIndexChanged);
}
}
Thanks,
Princy
0

Jayesh Goyani
Top achievements
Rank 2
answered on 20 Feb 2014, 01:05 PM
Hello,
There is not an such type of known issue in radgrid. So, please provide your code.
Thanks,
Jayesh Goyani
There is not an such type of known issue in radgrid. So, please provide your code.
Thanks,
Jayesh Goyani
0

Vikas
Top achievements
Rank 1
answered on 03 Mar 2014, 09:07 PM
This is the same issue as:
http://www.telerik.com/forums/griddropdowncolumns-blank-on-postback
I am just reopening that post to get more ideas.
Howcan I rebind to the grid after the selected index changed event has been fired while staying in the edit mode. The view state should not show blank data for the GridDropDownColumn.
0

Princy
Top achievements
Rank 2
answered on 04 Mar 2014, 08:05 AM
Hi Vikas,
Please try the below sample code snippet to persist the values of DropDownColumn on postback.
ASPX:
C#:
Thanks,
Princy
Please try the below sample code snippet to persist the values of DropDownColumn on postback.
ASPX:
<
telerik:RadGrid
runat
=
"server"
ID
=
"RadGrid1"
OnNeedDataSource
=
"RadGrid1_NeedDataSource"
AutoGenerateColumns
=
"false"
OnItemCreated
=
"RadGrid1_ItemCreated"
AllowPaging
=
"true"
AutoGenerateEditColumn
=
"true"
>
<
MasterTableView
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"Col1"
HeaderText
=
"Col1"
>
</
telerik:GridBoundColumn
>
<
telerik:GridDropDownColumn
DataField
=
"Col2"
DropDownControlType
=
"RadComboBox"
ListTextField
=
"value"
ListValueField
=
"index"
HeaderText
=
"DropDownColumn"
UniqueName
=
"DropDownColumn"
>
</
telerik:GridDropDownColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
C#:
private
bool
_isBound;
protected
void
RadGrid1_NeedDataSource(
object
source, GridNeedDataSourceEventArgs e)
{
((RadGrid)source).DataSource = GetGridData();
}
protected
void
RadGrid1_ItemCreated(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridDataItem)
{
if
(!_isBound)
{
(((GridDropDownColumnEditor)
((GridDropDownColumn)RadGrid1.MasterTableView.GetColumnSafe(
"DropDownColumn"
)).ColumnEditor)).DataSource
= GetDropDownData();
_isBound =
true
;
}
}
if
(e.Item
is
GridEditableItem && e.Item.IsInEditMode)
{
GridEditFormItem edititemForCombo = (GridEditFormItem)e.Item;
GridEditManager editMan = edititemForCombo.EditManager;
GridDropDownListColumnEditor editor = (GridDropDownListColumnEditor)(editMan.GetColumnEditor(
"DropDownColumn"
));
RadComboBox radCombo = editor.ComboBoxControl;
radCombo.AutoPostBack =
true
;
radCombo.SelectedIndexChanged +=
new
RadComboBoxSelectedIndexChangedEventHandler(radCombo_SelectedIndexChanged);
}
}
void
radCombo_SelectedIndexChanged(
object
sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
//Your Code
}
private
DataTable GetDropDownData()
{
DataTable dataTable =
new
DataTable();
dataTable.Columns.Add(
"index"
);
dataTable.Columns.Add(
"value"
);
for
(
int
i = 0; i < 20; i++)
{
dataTable.Rows.Add(
new
object
[] { i, i });
}
return
dataTable;
}
private
DataTable GetGridData()
{
DataTable dataTable =
new
DataTable();
dataTable.Columns.Add(
"Col1"
);
dataTable.Columns.Add(
"Col2"
);
for
(
int
i = 0; i < 20; i++)
{
dataTable.Rows.Add(
new
object
[] { i, i });
}
return
dataTable;
}
Thanks,
Princy
0

Vikas
Top achievements
Rank 1
answered on 04 Mar 2014, 06:53 PM
Thanks for your help, Princy. But unfortunately this did not work eventhough I do see that:
(((GridDropDownColumnEditor) ((GridDropDownColumn)RadGrid1.MasterTableView.GetColumnSafe("DropDownColumn")).ColumnEditor)).DataSource = GetDropDownData();
did actually get the correct datatable while debugging the selectedIndexChanged event.
I am attaching my code:
<telerik:RadGrid ID="RadGrid1d" runat="server"
AutoGenerateColumns="false" AllowPaging="False"
OnNeedDataSource="RadGrid1d_NeedDataSource" OnUpdateCommand="RadGrid1d_UpdateCommand"
OnItemCreated="RadGrid1d_ItemCreated"
OnCreateCommand="RadGrid1d_ItemCreated"
OnDeleteCommand="RadGrid1d_DeleteCommand"
OnInsertCommand="RadGrid1d_InsertCommand"
OnItemDataBound="RadGrid1d_ItemDataBound" Width="600px" >
<ClientSettings EnableRowHoverStyle="true" >
<Selecting AllowRowSelect="True" EnableDragToSelectRows="true" />
<ClientEvents OnRowDblClick="RadGrid1d_RowDblClick" />
</ClientSettings>
<PagerStyle Mode="NextPrevAndNumeric" />
<MasterTableView AutoGenerateColumns="False"
DataKeyNames="DROPDOWN_COLUMN" CommandItemDisplay="Top">
<Columns>
<telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn">
</telerik:GridEditCommandColumn>
<telerik:GridDropDownColumn DataField="DROPDOWN_COLUMN" DropDownControlType="RadComboBox"
HeaderText="Dropdown Column" ListTextField="DROPDOWN_COLUMN" ListValueField="DROPDOWN_COLUMN"
UniqueName="DROPDOWN_COLUMN" EnableEmptyListItem="true"
EmptyListItemText="--Choose an option--" EmptyListItemValue="">
</telerik:GridDropDownColumn>
<telerik:GridButtonColumn Text="Delete" CommandName="Delete" ButtonType="ImageButton" /> </Columns> <EditFormSettings> <EditColumn ButtonType="ImageButton" /> </EditFormSettings> </MasterTableView> </telerik:RadGrid>
protected void RadGrid1d_ItemCreated(object sender, GridItemEventArgs e)
{
if (e.Item is GridDataItem)
{
//if (!_isBound)
{
var columnEditor = (((GridDropDownColumnEditor)
((GridDropDownColumn) RadGrid1d.MasterTableView.GetColumnSafe("DROPDOWN_COLUMN")).ColumnEditor));
columnEditor.DataSource = GetFilteredDataTable(GetColumnDataTable(), "DROPDOWN_COLUMN");
columnEditor.DataBind();
_isBound = true;
}
}
if (e.Item is GridEditableItem && e.Item.IsInEditMode)
{
GridEditableItem editedItem = e.Item as GridEditableItem;
GridEditManager editMan = editedItem.EditManager;
GridDropDownListColumnEditor editor = (GridDropDownListColumnEditor)(editMan.GetColumnEditor("DROPDOWN_COLUMN"));
RadComboBox rComboBox = editor.ComboBoxControl;
rComboBox.MarkFirstMatch = true; if (!e.Item.OwnerTableView.IsItemInserted)
rComboBox.Enabled = false;
else
{
rComboBox.AutoPostBack = true;
rComboBox.SelectedIndexChanged += DropDownComboBox_SelectedIndexChanged;
}
}
}
void DropDownComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
string text1 = (sender as RadComboBox).Text; // do something
}
}
protected void RadGrid1d_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
if (e.Item is GridDataItem)
{
GridDataItem item = (GridDataItem)e.Item;
DataRowView row = (DataRowView)e.Item.DataItem;
item["DROPDOWN_COLUMN"].Text = row["DROPDOWN_COLUMN"].ToString();
}
if (e.Item is GridEditableItem && e.Item.IsInEditMode)
{
GridEditableItem editedItem = e.Item as GridEditableItem;
GridEditManager editMan = editedItem.EditManager;
GridDropDownListColumnEditor editor = (GridDropDownListColumnEditor)(editMan.GetColumnEditor("DROPDOWN_COLUMN"));
RadComboBox rComboBox = editor.ComboBoxControl; if (!e.Item.OwnerTableView.IsItemInserted)
{
DataRowView groupDataRow = (DataRowView) e.Item.DataItem;
rComboBox.Enabled = false;
}
rComboBox.CausesValidation = false;
}
}
(((GridDropDownColumnEditor) ((GridDropDownColumn)RadGrid1.MasterTableView.GetColumnSafe("DropDownColumn")).ColumnEditor)).DataSource = GetDropDownData();
did actually get the correct datatable while debugging the selectedIndexChanged event.
I am attaching my code:
<telerik:RadGrid ID="RadGrid1d" runat="server"
AutoGenerateColumns="false" AllowPaging="False"
OnNeedDataSource="RadGrid1d_NeedDataSource" OnUpdateCommand="RadGrid1d_UpdateCommand"
OnItemCreated="RadGrid1d_ItemCreated"
OnCreateCommand="RadGrid1d_ItemCreated"
OnDeleteCommand="RadGrid1d_DeleteCommand"
OnInsertCommand="RadGrid1d_InsertCommand"
OnItemDataBound="RadGrid1d_ItemDataBound" Width="600px" >
<ClientSettings EnableRowHoverStyle="true" >
<Selecting AllowRowSelect="True" EnableDragToSelectRows="true" />
<ClientEvents OnRowDblClick="RadGrid1d_RowDblClick" />
</ClientSettings>
<PagerStyle Mode="NextPrevAndNumeric" />
<MasterTableView AutoGenerateColumns="False"
DataKeyNames="DROPDOWN_COLUMN" CommandItemDisplay="Top">
<Columns>
<telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn">
</telerik:GridEditCommandColumn>
<telerik:GridDropDownColumn DataField="DROPDOWN_COLUMN" DropDownControlType="RadComboBox"
HeaderText="Dropdown Column" ListTextField="DROPDOWN_COLUMN" ListValueField="DROPDOWN_COLUMN"
UniqueName="DROPDOWN_COLUMN" EnableEmptyListItem="true"
EmptyListItemText="--Choose an option--" EmptyListItemValue="">
</telerik:GridDropDownColumn>
<telerik:GridButtonColumn Text="Delete" CommandName="Delete" ButtonType="ImageButton" /> </Columns> <EditFormSettings> <EditColumn ButtonType="ImageButton" /> </EditFormSettings> </MasterTableView> </telerik:RadGrid>
protected void RadGrid1d_ItemCreated(object sender, GridItemEventArgs e)
{
if (e.Item is GridDataItem)
{
//if (!_isBound)
{
var columnEditor = (((GridDropDownColumnEditor)
((GridDropDownColumn) RadGrid1d.MasterTableView.GetColumnSafe("DROPDOWN_COLUMN")).ColumnEditor));
columnEditor.DataSource = GetFilteredDataTable(GetColumnDataTable(), "DROPDOWN_COLUMN");
columnEditor.DataBind();
_isBound = true;
}
}
if (e.Item is GridEditableItem && e.Item.IsInEditMode)
{
GridEditableItem editedItem = e.Item as GridEditableItem;
GridEditManager editMan = editedItem.EditManager;
GridDropDownListColumnEditor editor = (GridDropDownListColumnEditor)(editMan.GetColumnEditor("DROPDOWN_COLUMN"));
RadComboBox rComboBox = editor.ComboBoxControl;
rComboBox.MarkFirstMatch = true; if (!e.Item.OwnerTableView.IsItemInserted)
rComboBox.Enabled = false;
else
{
rComboBox.AutoPostBack = true;
rComboBox.SelectedIndexChanged += DropDownComboBox_SelectedIndexChanged;
}
}
}
void DropDownComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
string text1 = (sender as RadComboBox).Text; // do something
}
}
protected void RadGrid1d_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
if (e.Item is GridDataItem)
{
GridDataItem item = (GridDataItem)e.Item;
DataRowView row = (DataRowView)e.Item.DataItem;
item["DROPDOWN_COLUMN"].Text = row["DROPDOWN_COLUMN"].ToString();
}
if (e.Item is GridEditableItem && e.Item.IsInEditMode)
{
GridEditableItem editedItem = e.Item as GridEditableItem;
GridEditManager editMan = editedItem.EditManager;
GridDropDownListColumnEditor editor = (GridDropDownListColumnEditor)(editMan.GetColumnEditor("DROPDOWN_COLUMN"));
RadComboBox rComboBox = editor.ComboBoxControl; if (!e.Item.OwnerTableView.IsItemInserted)
{
DataRowView groupDataRow = (DataRowView) e.Item.DataItem;
rComboBox.Enabled = false;
}
rComboBox.CausesValidation = false;
}
}