Multiple selection RadComboBox triggering OnSelectedIndexChanged

2 posts, 0 answers
  1. Bruno
    Bruno avatar
    3 posts
    Member since:
    Apr 2013

    Posted 11 Jul 2013 Link to this post

    I have the following scenario: 

    <%-- UF --%>
        <tr>
            <td>
                <label>UF</label>
                <br />
                <telerik:RadComboBox ID="rcbUF" runat="server" CheckBoxes="True" EnableCheckAllItemsCheckBox="True" CausesValidation="false"
                    Culture="pt-BR" CssClass="lt-width-10" MaxHeight="250" OnItemChecked="rcbUF_ItemChecked" AutoPostBack="true">
                </telerik:RadComboBox>
            </td>
        </tr>
        <%-- Rodovia --%>
            <tr>
                <td>
                    <label>Rodovia</label>
                    <br />
                    <asp:UpdatePanel runat="server" ID="uppRodovia">
                        <Triggers>
                            <asp:AsyncPostBackTrigger ControlID="rcbUF" />
                        </Triggers>
                        <ContentTemplate>
                            <telerik:RadComboBox ID="rcbRodovia" runat="server" CheckBoxes="True" EnableCheckAllItemsCheckBox="True" Culture="pt-BR" MaxHeight="250" CssClass="lt-width-10" />
                        </ContentTemplate>
                    </asp:UpdatePanel>
                </td>
            </tr>


    When an item is checked on rcbUF, the following method is called (something like that):

    protected void rcbUF_ItemChecked(object sender, RadComboBoxItemEventArgs e)
        {
        if (rcbUF.HasSelectedValue())
        {
            var _listaUF = rcbUF.Items.Where(x => x.Checked).Select(x => x.Value).ToList();
            var _rodovias = Repositorio<Rodovia>.GetAll.Where(x => x.ListaUF.Any(y=>_listaUF.Contains(y.UF.Id))).Select(x => x.Id).ToArray();
             
            if (_listaUF.Count > 0)
            {
                rcbRodovia.Carregar<Rodovia>(x => x.Numero, x => x.Id,
                    Constantes.TextoVazioEspaco,
                    true,
                    x => _rodovias.Contains(x.Id),
                    x => x.Numero);
            }
            else
            {
                rcbRodovia.Carregar<Rodovia>(x => x.Numero, x => x.Id,
                    Constantes.TextoVazioEspaco,
                    true,
                    x => x.Numero);
            }
             
            rcbRodovia.Items.Distinct();
            rcbRodovia.Enabled = true;
        }
        }

    My problem is that everytime I click on the item instead of the checkbox, it triggers a postback (much on the OnItemSelected way), and I really don't want it to occur.

    Later I tried setting the rcbUF OnClientSelectedIndexChanging event to trigger this function:

    function OnClientSelectedIndexChanging(sender, args)
    {
        args.set_cancel(true);
    }

    But the event never fires, like it does fire the codebehind event but not the client-side one.

  2. Nencho
    Admin
    Nencho avatar
    1457 posts

    Posted 16 Jul 2013 Link to this post

    Hello Bruno,

    I am afraid, that the desired functionality is not supported, since clicking on the item's text is closely related with checking the correspondent checkbox, in a CheckBox scenario. If you want to handle the server-side event, a PostBack should occur.

    Regards,
    Nencho
    Telerik
    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 the blog feed now.
  3. UI for ASP.NET Ajax is Ready for VS 2017
Back to Top