2013-07-10 14 views
1

我有以下情形:如何避免在使用多選RadComboBox時對ItemSelected進行回發?

<%-- 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> 

當一個項目上rcbUF檢查,下面的方法被調用(類似的東西):

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; 
} 
} 

我的問題是,每次我點擊項而不是複選框,它會觸發一個回發(很多OnItemSelected方法),我真的不希望它發生。

我在這裏錯過了什麼,或者它只是預期的行爲而沒有辦法繞過它?

回答

1

正確的方式來阻止回發

<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); 
     } 

感謝

+0

想你的建議,但JS函數結束了從來沒有被調用。 –

+0

哪裏有附加OnClientSelectIndexChanging事件? –

+0

從我測試過的幾乎任何其他客戶端事件都被觸發,但不是OnClientSelectIndexChanging。看起來服務器事件被觸發,但不是客戶端事件。 –

相關問題