having trouble setting the value of a GridDropDownColumn in a RadGrid detail table. Following the code at:
http://www.telerik.com/help/aspnet-ajax/grdcustomizeconfiguregriddropdowncolumn.html
my source code is as follows:
ASPX
DOT CS
Basically what I want: When user expands a region and clicks on "Add child record" (to add a child record to that region), the dd_Regions drop down column is automatically set to the value of the parent record.
when i debug, and step through the RadGrid1_ItemDataBound method, the parentItem variable is populated correctly, and has the ID that I am expecting. But editor.DropDownListControl comes back empty (Items.Count = 0). direct casting to a DropDownList returns the same (empty count).
Any help appreciated!
thanks in advance
/jonathan
http://www.telerik.com/help/aspnet-ajax/grdcustomizeconfiguregriddropdowncolumn.html
my source code is as follows:
ASPX
| <%@ Page Title="" Language="C#" MasterPageFile="~/admin.Master" AutoEventWireup="true" |
| CodeBehind="regions2.aspx.cs" Inherits="CRD.EAUtilitiesAdmin.regions2" %> |
| <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> |
| <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> |
| <asp:ScriptManager ID="ScriptManager1" runat="server" /> |
| <telerik:RadGrid ID="RadGrid1" runat="server" AllowPaging="True" AllowSorting="True" |
| AutoGenerateColumns="False" DataSourceID="ldsRegions" GridLines="None" OnItemDataBound="RadGrid1_ItemDataBound" |
| Skin="Office2007"> |
| <MasterTableView DataKeyNames="intRegionID" DataSourceID="ldsRegions" AllowAutomaticDeletes="True" |
| AllowAutomaticInserts="True" AllowAutomaticUpdates="True" CommandItemDisplay="TopAndBottom" |
| EditMode="InPlace" PageSize="20" Name="Regions"> |
| <RowIndicatorColumn> |
| <HeaderStyle Width="20px"></HeaderStyle> |
| </RowIndicatorColumn> |
| <ExpandCollapseColumn> |
| <HeaderStyle Width="20px"></HeaderStyle> |
| </ExpandCollapseColumn> |
| <Columns> |
| <telerik:GridBoundColumn DataField="intRegionID" DataType="System.Int32" HeaderText="ID" |
| ReadOnly="True" SortExpression="intRegionID" UniqueName="intRegionID"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="strRegion" HeaderText="Region" SortExpression="strRegion" |
| UniqueName="strRegion"> |
| </telerik:GridBoundColumn> |
| <telerik:GridDropDownColumn DataField="intSuperRegionID" DataSourceID="ldsSuperRegions" |
| HeaderText="Super Region" ListTextField="strSuperRegion" ListValueField="intSuperRegionID" |
| UniqueName="dd_SuperRegions"> |
| </telerik:GridDropDownColumn> |
| <telerik:GridEditCommandColumn UniqueName="EditCommand1" EditText="Edit Record" ButtonType="LinkButton"> |
| </telerik:GridEditCommandColumn> |
| <telerik:GridButtonColumn CommandName="delete" Text="delete record" UniqueName="DeleteColumn1" |
| ConfirmText="Delete this Record?"> |
| </telerik:GridButtonColumn> |
| </Columns> |
| <DetailTables> |
| <telerik:GridTableView DataKeyNames="intChargeSources_X_Regions" DataSourceID="ldsRegions_X_ChargeSources" |
| runat="server" CommandItemDisplay="Bottom" Name="ChargeSources_X_Regions" AllowAutomaticDeletes="True" |
| AllowAutomaticInserts="True" AllowAutomaticUpdates="True" EditMode="InPlace" |
| CommandItemSettings-AddNewRecordText="Add child record" Width="100%"> |
| <ParentTableRelation> |
| <telerik:GridRelationFields DetailKeyField="intRegionID" MasterKeyField="intRegionID" /> |
| </ParentTableRelation> |
| <Columns> |
| <telerik:GridDropDownColumn DataSourceID="ldsRegions" UniqueName="dd_Regions" SortExpression="strRegion" |
| HeaderText="Region" ListTextField="strRegion" ListValueField="intRegionID" DataField="intRegionID"> |
| </telerik:GridDropDownColumn> |
| <telerik:GridDropDownColumn DataSourceID="ldsChargeSources" UniqueName="dd_ChargeSources" |
| SortExpression="strChargeSource" HeaderText="Charge Source" ListTextField="strChargeSource" |
| ListValueField="intChargeSourceID" DataField="intChargeSourceID"> |
| </telerik:GridDropDownColumn> |
| <telerik:GridEditCommandColumn UniqueName="EditCommand2" EditText="Edit child record" |
| ButtonType="LinkButton"> |
| </telerik:GridEditCommandColumn> |
| <telerik:GridButtonColumn CommandName="delete" Text="delete child record" UniqueName="DeleteColumn2" |
| ConfirmText="Delete this Record?"> |
| </telerik:GridButtonColumn> |
| </Columns> |
| </telerik:GridTableView> |
| </DetailTables> |
| </MasterTableView> |
| </telerik:RadGrid> |
| <asp:LinqDataSource ID="ldsRegions" runat="server" ContextTypeName="CRD.EAUtilitiesAdmin.data.dbEAUtilitiesDataContext" |
| EnableDelete="True" EnableInsert="True" EnableUpdate="True" OrderBy="strRegion" |
| TableName="tblRegions"> |
| </asp:LinqDataSource> |
| <asp:LinqDataSource ID="ldsSuperRegions" runat="server" ContextTypeName="CRD.EAUtilitiesAdmin.data.dbEAUtilitiesDataContext" |
| OrderBy="strSuperRegion" TableName="tblSuperRegions"> |
| </asp:LinqDataSource> |
| <asp:LinqDataSource ID="ldsRegions_X_ChargeSources" runat="server" ContextTypeName="CRD.EAUtilitiesAdmin.data.dbEAUtilitiesDataContext" |
| EnableDelete="True" EnableInsert="True" EnableUpdate="True" TableName="tblChargeSources_X_tblRegions" |
| Where="intRegionID == @intRegionID"> |
| <WhereParameters> |
| <asp:ControlParameter ControlID="RadGrid1" Name="intRegionID" PropertyName="SelectedValue" |
| Type="Int32" /> |
| </WhereParameters> |
| </asp:LinqDataSource> |
| <asp:LinqDataSource ID="ldsChargeSources" runat="server" ContextTypeName="CRD.EAUtilitiesAdmin.data.dbEAUtilitiesDataContext" |
| OrderBy="strChargeSource" TableName="tblChargeSources"> |
| </asp:LinqDataSource> |
| </asp:Content> |
DOT CS
| using System; |
| using System.Collections.Generic; |
| using System.Linq; |
| using System.Web; |
| using System.Web.UI; |
| using System.Web.UI.WebControls; |
| using Telerik.Web.UI; |
| namespace CRD.EAUtilitiesAdmin |
| { |
| public partial class regions2 : System.Web.UI.Page |
| { |
| protected void Page_Load(object sender, EventArgs e) |
| { |
| } |
| protected void RadGrid1_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e) |
| { |
| // if you are inserting or updating a record in a child table, force the region drop down to display the region of the parent record |
| if ((e.Item is GridEditableItem && ((GridEditableItem)e.Item).IsInEditMode)) |
| { |
| if ((e.Item.OwnerTableView.Name.ToString() == "ChargeSources_X_Regions")) |
| { |
| GridEditableItem editItem = (GridEditableItem)e.Item; |
| GridEditManager editMan = editItem.EditManager; |
| GridDropDownListColumnEditor editor = (GridDropDownListColumnEditor)editMan.GetColumnEditor("dd_Regions"); |
| //in case you have RadComboBox editor for the GridDropDownColumn (this is the default editor), |
| //you will need to use ComboBoxControl below instead of DropDownListControl |
| //Then you can modify the list control as per your custom conventions |
| GridDataItem parentItem = (GridDataItem)e.Item.OwnerTableView.ParentItem; |
| editor.DropDownListControl.SelectedValue = parentItem.OwnerTableView.DataKeyValues[parentItem.ItemIndex]["intRegionID"].ToString(); |
| ////tried direct casting the DropDownList (below) but still came back empty |
| //DropDownList ddList = editor.DropDownListControl; |
| //ddList.Items.Insert(0, new ListItem("ddd","0")); |
| //ddList.SelectedIndex = 3; |
| } |
| } |
| } |
| } |
| } |
Basically what I want: When user expands a region and clicks on "Add child record" (to add a child record to that region), the dd_Regions drop down column is automatically set to the value of the parent record.
when i debug, and step through the RadGrid1_ItemDataBound method, the parentItem variable is populated correctly, and has the ID that I am expecting. But editor.DropDownListControl comes back empty (Items.Count = 0). direct casting to a DropDownList returns the same (empty count).
Any help appreciated!
thanks in advance
/jonathan