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

Multiple selection RadComboBox triggering OnSelectedIndexChanged

1 Answer 60 Views
ComboBox
This is a migrated thread and some comments may be shown as answers.
Bruno
Top achievements
Rank 1
Bruno asked on 11 Jul 2013, 05:23 PM
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.

1 Answer, 1 is accepted

Sort by
0
Nencho
Telerik team
answered on 16 Jul 2013, 08:50 AM
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.
Tags
ComboBox
Asked by
Bruno
Top achievements
Rank 1
Answers by
Nencho
Telerik team
Share this question
or