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

How get RadTreeview.SelectedValue in RadcomboBox for another RadComboBox

1 Answer 110 Views
ComboBox
This is a migrated thread and some comments may be shown as answers.
Oosoo
Top achievements
Rank 1
Oosoo asked on 22 Jun 2011, 04:12 AM
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
    <script type="text/javascript">
  
        //RadTreeNOde in Combobox
        function nodeClicking(sender, args) {
            var comboBox = $find("<%= DepartmentCombo.ClientID %>");
  
            var node = args.get_node()
  
            comboBox.set_text(node.get_text());
  
            comboBox.trackChanges();
            comboBox.get_items().getItem(0).set_text(node.get_text());
            comboBox.get_items().getItem(0).set_value(node.get_value());
            comboBox.commitChanges();
                          
  
            comboBox.hideDropDown();
  
            // Call comboBox.attachDropDown if:
            // 1) The RadComboBox is inside an AJAX panel.
            // 2) The RadTreeView has a server-side event handler for the NodeClick event, i.e. it initiates a postback when clicking on a Node.
            // Otherwise the AJAX postback becomes a normal postback regardless of the outer AJAX panel.
  
            //comboBox.attachDropDown();
        }
  
        function StopPropagation(e) {
            if (!e) {
                e = window.event;
            }
  
            e.cancelBubble = true;
        }
  
        function OnClientDropDownOpenedHandler(sender, eventArgs) {
            var tree = sender.get_items().getItem(0).findControl("RadTreeView1");
            var selectedNode = tree.get_selectedNode();
            if (selectedNode) {
                selectedNode.scrollIntoView();
            }
        
                         
    </script>
</telerik:RadCodeBlock>
  
  
 <telerik:RadComboBox runat="server" ID="DepartmentCombo" Width="100%" OnClientDropDownOpened="OnClientDropDownOpenedHandler"
                        EmptyMessage="Хэлтэс албаны сонгоно уу" ExpandAnimation-Type="None" CollapseAnimation-Type="None"
                        AutoPostBack="true" OnInit="DepComboBox_OnInit">
                        <Items>
                            <telerik:RadComboBoxItem Value="0" Text="Хэлтэс албаа сонгоно уу" />
                        </Items>
                        <ItemTemplate>
                            <div id="div1">
                                <telerik:RadTreeView runat="server" ID="RadTreeView1" OnClientNodeClicking="nodeClicking" Width="100%" Height="240px">
                                </telerik:RadTreeView>
                            </div>
                        </ItemTemplate>
                    </telerik:RadComboBox>
                    <script type="text/javascript">
                        var divitem = document.getElementById("div1");
                        if (null != divitem)
                            divitem.onclick = StopPropagation;
                    </script>

when i postback and get RadTreeview1.selectedvalue  all working perfectly
RadTreeView RadTree = (RadTreeView)DepartmentCombo.Items[0].FindControl("RadTreeView1");
            Response.Write(RadTree.SelectedValue);

but when i get RadTreeview1.selectedvalue in PositionCombo i get msg "Input string was not in a correct format"
<telerik:RadComboBox runat="server" ID="PositionCombo" Width="100%" EmptyMessage="Албан тушаалаа сонгоно уу"
                        EnableLoadOnDemand="True" ShowMoreResultsBox="true" Height="150px" EnableVirtualScrolling="true"
                        OnItemsRequested="PositionCombo_ItemsRequested" LoadingMessage="Ачааллаж байна...">
                        <HeaderTemplate>
                            <table style="width: 100%" cellspacing="0" cellpadding="0">
                                <tr style="color: #417CAB; font-weight: bold;">                                   
                                    <td style="width: 100%;">
                                        Нэр
                                    </td>
                                </tr>
                            </table>
                        </HeaderTemplate>
                        <ItemTemplate>
                            <table style="width: 100%" cellspacing="0" cellpadding="0">
                                <tr>                                   
                                    <td style="width: 100%;">
                                        <%# DataBinder.Eval(Container, "Text")%>
                                    </td>
                                </tr>
                            </table>
                        </ItemTemplate>
                    </telerik:RadComboBox>

protected void PositionCombo_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)
        {
            RadTreeView RadTree = (RadTreeView)DepartmentCombo.Items[0].FindControl("RadTreeView1");          
  
            int ComboID = Convert.ToInt32(DepartmentCombo.SelectedValue); //0
            int TReeID = Convert.ToInt32(RadTree.SelectedValue);//Input string was not in a correct format
              
  
            DataTable data = _DepClass.GetPositionListForCbx(TReeID);
  
            int itemOffset = e.NumberOfItems;
            int endOffset = Math.Min(itemOffset + 500, data.Rows.Count);
            e.EndOfItems = endOffset == data.Rows.Count;
  
            for (int i = itemOffset; i < endOffset; i++)
            {
                RadComboBoxItem tempIT = new RadComboBoxItem();
  
                tempIT.Value = data.Rows[i]["id"].ToString();
                tempIT.Text = data.Rows[i]["title"].ToString();
                PositionCombo.Items.Add(tempIT);
                tempIT.DataBind();
            }
            e.Message = GetStatusMessage(endOffset, data.Rows.Count);
        }


PS: Sorry my English is bad :).

1 Answer, 1 is accepted

Sort by
0
Dimitar Terziev
Telerik team
answered on 25 Jun 2011, 10:23 AM
Hi Oosoo,

The reason for your problem is due to fact that when ItemRequested event is fired, a callback to the server is made and not a post-back. When this load on demand technique is used you could not access the current values of other controls on the page since they are not send to the server. 

Regards,
Dimitar Terziev
the Telerik team

Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

Tags
ComboBox
Asked by
Oosoo
Top achievements
Rank 1
Answers by
Dimitar Terziev
Telerik team
Share this question
or