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

Treeview in combobox can not be found

5 Answers 81 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Mario
Top achievements
Rank 1
Mario asked on 08 Apr 2012, 11:00 AM
Hello,
I have a Treeview in a related ComboBox.
<telerik:GridTemplateColumn DataField="LayoutTypeID"
    FilterControlAltText="Filter LayoutTypeID column" HeaderText="Layout Type"
    UniqueName="LayoutTypeID">
    <EditItemTemplate>
        <telerik:RadComboBox ID="LayoutTypeIDRadComboBox" runat="server"
            DataSourceID="ODSLayoutTypes"
            DataTextField="TypeName"
            DataValueField="TypeID"
            onselectedindexchanged="LayoutTypeIDRadComboBox_SelectedIndexChanged"
            AutoPostBack="true"
            SelectedValue='<%# Bind("LayoutTypeID") %>'>
        </telerik:RadComboBox>
    </EditItemTemplate>
    <ItemTemplate>
        <asp:Label ID="LayoutTypeIDLabel" runat="server"
            Text='<%# Eval("LayoutTypeID") %>'></asp:Label>
    </ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="LayoutID"
    FilterControlAltText="Filter column1 column" HeaderText="Layout"
    UniqueName="LayoutID">
    <EditItemTemplate>
        <telerik:RadComboBox ID="LayoutIDRadComboBox"
            runat="server" Culture="de-DE"
            <ItemTemplate>
                <div id="div1">
                    <telerik:RadTreeView ID="RTVLayouts"
                        runat="server"                                                                     
                        onnodedatabound="RTVLayouts_NodeDataBound" >
                    </telerik:RadTreeView>
                </div>
            </ItemTemplate>                                                    
        </telerik:RadComboBox>
    </EditItemTemplate>
    <ItemTemplate>
        <asp:Label ID="LayoutIDLabel" runat="server" Text='<%# Eval("LayoutID") %>'></asp:Label>
    </ItemTemplate>
</telerik:GridTemplateColumn>

protected void LayoutTypeIDRadComboBox_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
    RadComboBox RCBLayoutTypes = sender as RadComboBox;
    GridEditableItem item = RCBLayoutTypes.NamingContainer as GridEditableItem;
 
    RadComboBox RCBLayouts = item.FindControl("LayoutIDRadComboBox") as RadComboBox;
 
    int layoutTypeID = 0;
    try
    {
        layoutTypeID = Convert.ToInt32(e.Value);
    }
    catch
    {
        layoutTypeID = 0;
    }
 
    LoadLayoutsForTreeView(layoutTypeID.ToString(), RCBLayouts);
}
 
protected void LoadLayoutsForTreeView(string LayoutTypesID, RadComboBox rcbl)
{
 
    if (LayoutTypesID != string.Empty)
    {
        //rcbSelectLayout.ClearSelection();
        LayoutsBLL lbll = new LayoutsBLL();
        RadTreeView rtv = (rcbl.Items[0].FindControl("RTVLayouts")) as RadTreeView;
        rtv.DataSource = lbll.GetLayoutsByLayoutTypes(Convert.ToInt32(LayoutTypesID));
        rtv.DataValueField = "LayoutID";
        rtv.DataTextField = "LayoutName";
        rtv.DataFieldID = "LayoutID";
        rtv.DataFieldParentID = "ParentID";
        rtv.DataBind();          
    }
 
}


Treeview in combobox can not be found. I get an ArgumentOutOfRangeException - Items count is 0.

Best regards
Reiner

5 Answers, 1 is accepted

Sort by
0
Jayesh Goyani
Top achievements
Rank 2
answered on 09 Apr 2012, 06:54 AM
Hello Mario,

Please use below code snippet to avoid this error.
protected void LoadLayoutsForTreeView(string LayoutTypesID, RadComboBox rcbl)
    {
        if (rcbl.Items.Count > 0)
        {
            RadTreeView rtv = (rcbl.Items[0].FindControl("RTVLayouts")) as RadTreeView;
        }
 
    }

Note : you get this error because there is not any item(s) in your "LayoutIDRadComboBox".

Thanks,
Jayesh Goyani
0
Mario
Top achievements
Rank 1
answered on 09 Apr 2012, 09:50 AM
Thanks for the answer, Jayesh. I know that the value of items is 0. But where is my mistake in thinking? Why doesn't have an item? I have an ItemTemplate such as TreeView. This TreeView is depending from the value from the first ComboBox.How can i solve this problem?

Best regards
Reiner
0
Jayesh Goyani
Top achievements
Rank 2
answered on 09 Apr 2012, 11:03 AM
Hello Mario,

please add one blank item in radcombobobx.
<telerik:RadComboBox ID="LayoutIDRadComboBox"
            runat="server" Culture="de-DE" >
            <ItemTemplate>
                <div id="div1">
                    <telerik:RadTreeView ID="RTVLayouts"
                        runat="server"                                                                    
                        onnodedatabound="RTVLayouts_NodeDataBound" >
                    </telerik:RadTreeView>
                </div>
            </ItemTemplate>      
 
                                              
               <Items>
                     <telerik:RadComboBoxItem Text="" />
                </Items>
            </telerik:RadComboBox>


Thanks,
Jayesh Goyani
0
Sentil
Top achievements
Rank 1
answered on 22 Dec 2014, 12:13 PM
Hi

I am in same position but different scenario
I am using batch update where sample code like below , data loaded already to RadTreeView1, no issues on loading data
 <telerik:GridTemplateColumn>
<EditItemTemplate>
 <ComboBox ID="locationSelector" Width="215"  DropDownWidth="215"
        Height="300"  runat="server" >
        <ItemTemplate>
            <div>
                <telerik:RadTreeView ID="RadTreeView1"
                    runat="server">                   
                </telerik:RadTreeView>
            </div>
        </ItemTemplate>
        <Items>
            <telerik:RadComboBoxItem Text="" runat="server" />
        </Items>
    </ComboBox>
 </EditItemTemplate> </telerik:GridTemplateColumn>

when i hit save for batch update how can i fetch the selected node as i am using batch update we can change multiple items
my batch update method
protected void grid_BatchEditCommand(object source, GridBatchEditingEventArgs e)
        {
            foreach (GridBatchEditingCommand command in e.Commands)
            {
                if ((command.Type == GridBatchEditingCommandType.Update))
                {
                         //how to access selected value or node
                }
             }
         }

Thanks
Senthil
0
Eyup
Telerik team
answered on 25 Dec 2014, 08:26 AM
Hi Sentil,

Please note that Batch editing is mainly a client-side functionality and in this sense, it is a better idea to implement javascript approaches in this case. For example, there are not 10 different treeviews generated to edit each of the records as with EditForms or PopUp edit modes, but there is only 1 treeview loaded on the server which works for ideal performance and rendering optimization when opening the edit cells on the client.

In addition, creating custom edit templates with Batch editing mode may require further handling:
(Section Handling Advanced Templates)
http://www.telerik.com/help/aspnet-ajax/grid-batch-editing.html

With that being said,
you can check the aforementioned article to see how to handle this specific scenario and access the values programmatically.

Hope this helps.


Regards,
Eyup
Telerik
 

Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.

 
Tags
Grid
Asked by
Mario
Top achievements
Rank 1
Answers by
Jayesh Goyani
Top achievements
Rank 2
Mario
Top achievements
Rank 1
Sentil
Top achievements
Rank 1
Eyup
Telerik team
Share this question
or