OnClientItemChecked Not Fired

9 posts, 0 answers
  1. digitall
    digitall avatar
    169 posts
    Member since:
    Jun 2006

    Posted 23 Nov 2011 Link to this post

    I am using the new Q3 2011 bits and noticed the OnClientItemChecked event doesn't fire when I have checkboxes enabled and click the "Check All" option. Selecting/Deselecting any option underneath fires the event, but "Check All" doesn't.

    Any tips on how to make that happen?
  2. Shinu
    Shinu avatar
    17764 posts
    Member since:
    Mar 2007

    Posted 23 Nov 2011 Link to this post

    Hello,

    Check the following forum thread which discussed similar scenario.
    RadComboBox OnItemChecked not firing when checking All checkbox

    -Shinu.
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. digitall
    digitall avatar
    169 posts
    Member since:
    Jun 2006

    Posted 24 Nov 2011 Link to this post

    I think that applies to the server-side event. I need to get it to fire client-side because I have to run a script whenever something changes, but the script doesn't run server-side.
  5. Kalina
    Admin
    Kalina avatar
    918 posts

    Posted 29 Nov 2011 Link to this post

    Hello Digitall,

    As I understand – you want to perform a custom client-side action when the "CheckAllItems" checkbox is checked. You can easily attach a change() event handler at this checkbox in this way:
    <head runat="server">
    <title></title>
    <script type="text/javascript" language="javascript">
    function onLoad(sender) {   
        $telerik.$('.rcbCheckAllItemsCheckBox').change(function() {          
       if(sender.get_text() == "All items checked")
       {
      alert(sender.get_text()+ " and you can perform some custom action here");
       }         
        });
    }   
    </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
            <telerik:RadComboBox ID="RadComboBox1" runat="server"
                CheckBoxes="true"  OnClientLoad="onLoad"
                EnableCheckAllItemsCheckBox="true" >
                <Items>
                    <telerik:RadComboBoxItem Text="item 1" Value="1" />
                    <telerik:RadComboBoxItem Text="item 2" Value="2" />
                    <telerik:RadComboBoxItem Text="item 3" Value="3" />
                </Items>
            </telerik:RadComboBox>
        </div>
        </form>
    </body>

    Greetings,
    Kalina
    the Telerik team
    If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now
  6. digitall
    digitall avatar
    169 posts
    Member since:
    Jun 2006

    Posted 29 Nov 2011 Link to this post

    This doesn't seem to be working quite right. I have 8 total items in my list (pulled from a DB table, but essentially static) and when some of the items are checked and then the "Check All" option is selected it doesn't fire. I modified the function you posted here to do an alert whenever something is checked and it looks like the text of that item changes based on what is selected. For instance, using that example (7 items selected), when I hit the "Check All" option the alert shows "7 items checked" (which is just sender.get_text()). When nothing is selected and I hit the "Check All" option the alert pops up but the text is blank. This confirms my thought that the checkbox's get_text() value is equal to whatever number of items are selected (or "All items checked") if that's the case.

    In my current scenario I can just call the function I'm trying to without caring which item is selected (i.e. no need to compare sender.get_text() to anything), but any ideas should that scenario change for me or someone else needs this functionality?
  7. Kalina
    Admin
    Kalina avatar
    918 posts

    Posted 30 Nov 2011 Link to this post

    Hi Digitall,

    The sample script that I provided you just demonstrates how to attach a "change" event (and handler function) at the CheckAllItems CheckBox element.
    I am not sure what exactly your modification is, but when all items are checked - the text within RadComboBox input should be "All items checked" and when there are no checked items - the input should be empty.
    Additionally we will consider implementing a new event to be fired when CheckAllItems CheckBox is checked in our future releases.

    Regards,
    Kalina
    the Telerik team
    If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now
  8. Rick
    Rick avatar
    5 posts
    Member since:
    May 2012

    Posted 08 Jun 2012 Link to this post

    I did something like the following:
    <tr>
        <td bgcolor="#FFFFFF" class="grey33-13">
            Select Other  
                <telerik:RadComboBox ID="ddlAssignOther" runat="server" 
                     CheckBoxes="true"
                    EnableCheckAllItemsCheckBox="true" AppendDataBoundItems="true" OnClientDropDownClosed="closed"
                    EnableLoadOnDemand="true" EnableTextSelection="true" MarkFirstMatch="true">
                </telerik:RadComboBox
        </td>
        <td>
            <telerik:RadTextBox runat="server" ID="txtOthers" TextMode="MultiLine" ReadOnly="true" Height="40" Width="300"></telerik:RadTextBox>
        </td>
    </tr>



    function
    closed(sender, eventArgs) {
        var combo = $find("<%= ddlAssignOther.ClientID %>");
        combo = combo.get_checkedItems()
        var txt = document.getElementById("<%=txtOthers.ClientID %>");
        if (sender._checkAllItemsElement[0].all[0].checked) {
            for (var i = 0; i < combo.length; i++) {
                if (i == 0) {
                    txt.value = combo[0]._text;
                }
                else {
                    text = txt.value;
                    if (text.indexOf(combo[i]._text) == -1) {
                        txt.value = txt.value + ',' + combo[i]._text;
                    }
                }
            }
        }
        else {
            if (combo.length > 0) {
                for (var i = 0; i < combo.length; i++) {
                    if (combo[i]._checkBoxElement.checked) {
                        if (i == 0) {
                            txt.value = combo[0]._text;
                        }
                        else {
                            text = txt.value;
                            if (text.indexOf(combo[i]._text) == -1) {
                                txt.value = txt.value + ',' + combo[i]._text;
                            }
                        }
                    }
                }
            }
            else { txt.value = ""; }
        }
    }
  9. Phil
    Phil avatar
    4 posts
    Member since:
    Jun 2012

    Posted 13 Nov 2012 Link to this post

    Kalina,

    Sorry to resurrect an old thread but you mentioned implementing this feature: "Additionally we will consider implementing a new event to be fired when CheckAllItems CheckBox is checked in our future releases." Was this ever implemented? It is a feature that should really be there in my eyes. Your controls are good but sometimes they are just missing little things like this which is a little disappointing.

    Thanks
    Phil
  10. Kalina
    Admin
    Kalina avatar
    918 posts

    Posted 16 Nov 2012 Link to this post

    Hello Phil,

    Please accept our apologies for the inconvenience caused.
    Indeed this feature is not implemented yet, but it is included in our plans for the next release.

    Meanwhile I can suggest you handle the OnClientLoad event of the RadComboBox and attach a "change" event handler at the "CheckAll" checkbox:

    <script type="text/javascript" language="javascript">
    function onLoad(sender) {   
        $telerik.$('.rcbCheckAllItemsCheckBox').change(function() {          
         __doPostBack();                 
        });
    }   
     
    </script>

    <telerik:RadComboBox ID="RadComboBox1" runat="server" EnableAriaSupport="true"
            OnItemChecked="RadComboBox1_ItemChecked" EnableOverlay="false"
        CheckBoxes="true"  OnClientLoad="onLoad"
        EnableCheckAllItemsCheckBox="true" >
        <Items>
            <telerik:RadComboBoxItem Text="item 1" Value="1" />
            <telerik:RadComboBoxItem Text="item 2" Value="2" />
            <telerik:RadComboBoxItem Text="item 3" Value="3" />
        </Items>
    </telerik:RadComboBox>
    <asp:Label ID="lblPostBack" runat="server"></asp:Label>

    protected void Page_Load(object sender, EventArgs e)
    {
        lblPostBack.Text = this.RadComboBox1.Text;
    }



    Regards,
    Kalina
    the Telerik team
    If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
Back to Top
UI for ASP.NET Ajax is Ready for VS 2017