Can't find Combobox

5 posts, 0 answers
  1. Daniel
    Daniel avatar
    35 posts
    Member since:
    Jan 2011

    Posted 17 Oct 2013 Link to this post

    Hi Guys, i hope someone can help me with my Problem.

    It adding a bunch of RadComboBox dynamiclly on PageLoad to my Page. This works without Problems.
    But if i want to find any Combobox by $find i always get Null back.

    Has this something to do with kind of adding?

    Here is my Code:

    Public Sub MenuHrefAnlegen(ByVal endVal As Integer, ByVal strArrQuerystring As Array)
     
        Dim width As String = "width:199px;"
        Dim count As Integer = 1
        Dim i As Integer
        Dim startval As Integer
        startval = 1
        For i = startval To endVal
            'erzeuge menü element
     
            Dim combo As New RadComboBox()
            combo.ID = "rcbHrefAuswaehlen" & count
            combo.EnableLoadOnDemand = True
            combo.Skin = "Metro"
            combo.Items.Insert(0, New RadComboBoxItem("Über uns", String.Empty))
            combo.Items.Insert(1, New RadComboBoxItem("Baufinanzierung", String.Empty))
            combo.Items.Insert(2, New RadComboBoxItem("Denkmal-Immobilien", String.Empty))
            combo.Items.Insert(3, New RadComboBoxItem("Photovoltaik", String.Empty))
            combo.Items.Insert(4, New RadComboBoxItem("Assekuranz", String.Empty))
            combo.Items.Insert(5, New RadComboBoxItem("Kontaktseite", String.Empty))
            combo.Items.Insert(6, New RadComboBoxItem("Impressum", String.Empty))
            combo.Items.Insert(7, New RadComboBoxItem("Benutzerdefinierte Seite", String.Empty))
     
            Dim hfMenuElement As New HiddenField
            hfMenuElement.ID = "hfMenuElement" + count.ToString()
            hfMenuElement.Value = strArrQuerystring(count)
     
            MenuAusMenuPunktenZusammengesetzt.Controls.Add(New LiteralControl("<li class=""floatKill""><a href=""#"" id=""hrefm" & count & """ runat=""server"" onmouseover=""menuov('menuleft" & count & "', 'menupuffer" & count & "', 'menuright" & count & "');"" onmouseout=""menuovf('menuleft" & count & "', 'menupuffer" & i & "', 'menuright" & count & "');""><div id=""menuleft" & count & """ class=""menu_left""></div><div id=""menupuffer" & count & """ class=""menu_puffer"" style=""" & width & """>" & strArrQuerystring(count) & "</div><div id=""menuright" & count & """ class=""menu_right""></div></a><div class=""pfeil links"" style=""margin-left:15px;margin-top:8px;""></div><div class=""pfeil links"" style=""margin-top:8px;""></div><div class=""pfeil links"" style=""margin-right:15px;margin-top:8px;""></div></li>"))
            MenuAusMenuPunktenZusammengesetzt.Controls.Add(combo)
            MenuAusMenuPunktenZusammengesetzt.Controls.Add(hfMenuElement)
     
            count += 1
        Next
     
    End Sub

    And my find function:

                function CollectMenuElementeWithHref(sender, eventArgs) {
                    var VID = $('input[id$=hfVermittlerID]').val();
                    var obj = { ID: VID };
                    for (var i = 1; i < 9; i++) {
                        var hfVal = $('[id$=hfMenuElement' + i + ']').val();
                         
    //At this point i get Null back
                        var combo = $find("<%= rcbHrefAuswaehlen" + i + ".ClientID %>");
                        var item = combo.get_items().getItem(2);
     
                        if (hfVal) {
                            obj["pa" + i] = hfVal
                            obj["href" +1] = item.get_text()
                        }
                    }
                    eventArgs.set_cancel(true);
                    window.location.href = 'VermittlerBearbeiten.aspx?' + $.param(obj);
                }

    Thank you for reading :)
    Daniel
  2. Shinu
    Shinu avatar
    17764 posts
    Member since:
    Mar 2007

    Posted 17 Oct 2013 Link to this post

    Hi Daniel,

    Please have a look into the sample code that I tried to access a dynamically created RadComboBox in JavaScript.

    ASPX:
    <telerik:RadMenu ID="RadMenu1" runat="server" OnClientItemClicked="OnClientItemClicked1">
        <Items>
            <telerik:RadMenuItem Text="Menu1" runat="server">
            </telerik:RadMenuItem>
        </Items>
    </telerik:RadMenu>

    C#:
    protected void Page_Load(object sender, EventArgs e)
    {
        RadComboBox combo = new RadComboBox();
        combo.ID = "RadComboBox1";
        combo.Skin = "Metro";
        combo.EnableLoadOnDemand = true;
        combo.Items.Insert(0,new RadComboBoxItem("Item1","1"));
        combo.Items.Insert(1,new RadComboBoxItem("Item2","2"));
        combo.Items.Insert(2,new RadComboBoxItem("Item3","3"));
        combo.Items.Insert(3,new RadComboBoxItem("Item4","4"));
        combo.Items.Insert(4,new RadComboBoxItem("Item5","5"));
        RadMenu1.Controls.Add(combo);
    }

    JavaScript:
    <script type="text/javascript">
        function OnClientItemClicked1(sender, args) {
            var combobox = $find('<%= RadMenu1.FindControl("RadComboBox1").ClientID %>');//accessing radcombobox
        }
    </script>

    Hope this will helps you.
    Thanks,
    Shinu.
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Daniel
    Daniel avatar
    35 posts
    Member since:
    Jan 2011

    Posted 18 Oct 2013 Link to this post

    Okay thank you, i will try this.
    But for understanding, does it only work in this way and if yes, why?

    EDIT:

    Unfortunately it still not working.
    I can creat the Combobox like in your example. But if i wanna get the value by javascript, i still can't find the Control.
    What i'm doing wrong? :/

    I tried it like this:

    function CollectMenuElementeWithHref(sender, eventArgs) {
           .... 
     //Still get Null back
    var combobox = $find('<%= RadMenu1.FindControl("<%= rcbHrefAuswaehlen" + i + ".ClientID %>").ClientID %>');//accessing radcombobox
    //This also not working
            //var combobox = $find('<%= RadMenu1.FindControl("rcbHrefAuswaehlen' + i + '").ClientID %>');//accessing radcombobox
            var
    item = combobox.get_items().getItem(2);
           ....
      }


            <asp:Panel ID="pnlErsteMenuesAnlegenSchritt3" runat="server">
                
                <telerik:RadMenu ID="RadMenu1" runat="server">
                    <Items>
                        <telerik:RadMenuItem Text="Menu1" runat="server">
                        </telerik:RadMenuItem>
                    </Items>
                </telerik:RadMenu>

                <telerik:RadButton ID="rtbnMenuElementeHrefEingabeVerarbeiten" runat="server" Text="Weiter" OnClientClicking="CollectMenuElementeWithHref"></telerik:RadButton>
            </asp:Panel>
    Public Sub MenuHrefAnlegen(ByVal endVal As Integer, ByVal strArrQuerystring As Array)
     
        Dim width As String = "width:199px;"
        Dim count As Integer = 1
        Dim i As Integer
        Dim startval As Integer
        startval = 1
        For i = startval To endVal
            'erzeuge menü element
     
            Dim combo As New RadComboBox()
            combo.ID = "rcbHrefAuswaehlen" & count
            combo.EnableLoadOnDemand = True
            combo.Skin = "Metro"
            combo.Items.Insert(0, New RadComboBoxItem("Über uns", String.Empty))
            combo.Items.Insert(1, New RadComboBoxItem("Baufinanzierung", String.Empty))
            combo.Items.Insert(2, New RadComboBoxItem("Denkmal-Immobilien", String.Empty))
            combo.Items.Insert(3, New RadComboBoxItem("Photovoltaik", String.Empty))
            combo.Items.Insert(4, New RadComboBoxItem("Assekuranz", String.Empty))
            combo.Items.Insert(5, New RadComboBoxItem("Kontaktseite", String.Empty))
            combo.Items.Insert(6, New RadComboBoxItem("Impressum", String.Empty))
            combo.Items.Insert(7, New RadComboBoxItem("Benutzerdefinierte Seite", String.Empty))
     
            Dim hfMenuElement As New HiddenField
            hfMenuElement.ID = "hfMenuElement" + count.ToString()
            hfMenuElement.Value = strArrQuerystring(count)
     
            MenuAusMenuPunktenZusammengesetzt.Controls.Add(New LiteralControl("<li class=""floatKill""><a href=""#"" id=""hrefm" & count & """ runat=""server"" onmouseover=""menuov('menuleft" & count & "', 'menupuffer" & count & "', 'menuright" & count & "');"" onmouseout=""menuovf('menuleft" & count & "', 'menupuffer" & i & "', 'menuright" & count & "');""><div id=""menuleft" & count & """ class=""menu_left""></div><div id=""menupuffer" & count & """ class=""menu_puffer"" style=""" & width & """>" & strArrQuerystring(count) & "</div><div id=""menuright" & count & """ class=""menu_right""></div></a><div class=""pfeil links"" style=""margin-left:15px;margin-top:8px;""></div><div class=""pfeil links"" style=""margin-top:8px;""></div><div class=""pfeil links"" style=""margin-right:15px;margin-top:8px;""></div></li>"))
        '    This works without Problems
    RadMenu1.Controls.Add(combo)
            MenuAusMenuPunktenZusammengesetzt.Controls.Add(hfMenuElement)
     
            count += 1
        Next
     
    End Sub

    Thank you,
    Daniel
  5. Daniel
    Daniel avatar
    35 posts
    Member since:
    Jan 2011

    Posted 18 Oct 2013 Link to this post

    Sorry for Doublepost.

    I can get the Control like this:

    function CollectMenuElementeWithHref(sender, eventArgs) {
     ...
            var comboID = "rcbHrefAuswaehlen" + i
            var combo = $("[id$=" + comboID +"]");
            var item = combo.get_items().getItem(1);
      ....
    }

    But now i can't get the item :D
    I get this Error:
    TypeError: combo.get_items is not a function


    Is this actually the right way?
  6. Shinu
    Shinu avatar
    17764 posts
    Member since:
    Mar 2007

    Posted 21 Oct 2013 Link to this post

    Hi Daniel,

    Using $find("<%= ControlID.ClientID %>") is the recommended way to get reference to client-side objects. In the above code you tried, the ID selector Selects a single element with the given id attribute which wont return the controls client object and hence the get_items() method wont work. <% %> are server side codes and you cannot get the Server side expression running by concatenation using JavaScript. When you are using $find to access a control from client side, the ControlID should be the ID of any server control on that page and there you cannot have any variable name which holds the ID of the desired control.

    Thanks,
    Shinu.

Back to Top
UI for ASP.NET Ajax is Ready for VS 2017