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

GridDropDownColumn blank on postback

5 Answers 152 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Vikas
Top achievements
Rank 1
Vikas asked on 19 Feb 2014, 10:32 PM
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>

5 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 20 Feb 2014, 09:23 AM
Hi Vikas,

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
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:
<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;
     }
        }
Tags
Grid
Asked by
Vikas
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Jayesh Goyani
Top achievements
Rank 2
Vikas
Top achievements
Rank 1
Share this question
or