Bruno Machado - vargero
Bruno Machado - vargero

Reputation: 2730

How to avoid postback on ItemSelected when using a multiple selection RadComboBox?

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), I and really don't want it to occur.

Am I missing something here, or is it just the expected behavior an there is no way around it?

Upvotes: 1

Views: 1820

Answers (1)

Arun Bertil
Arun Bertil

Reputation: 4638

The correct way to stop the postback is

<telerik:RadComboBox ID="rd1" runat="server" OnClientSelectedIndexChanging="OnClientSelectedIndexChanging" AutoPostBack="true">
<Items>
<telerik:RadComboBoxItem Text="1001" />
<telerik:RadComboBoxItem Text="2001" />
<telerik:RadComboBoxItem Text="3001" />
<telerik:RadComboBoxItem Text="4001" />
<telerik:RadComboBoxItem Text="5001" />
<telerik:RadComboBoxItem Text="6001" />
</Items>
</telerik:RadComboBox>

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

Thanks

Upvotes: 1

Related Questions