RadComboBox с проблемой флажков AJAX

Я создал radcombobox со списком флажков. Пользователь может установить несколько флажков, и когда он проверяет, какая-либо метка элемента на странице должна быть обновлена ​​(this.label.text += someValue). Я добавил Ajax:UpdatePanel с асинхронным триггером в этом radcombobox, но проблема в том, что выпадающий список элементов проверки пользователя закрывается сам :( Как я могу предотвратить закрытие выпадающего списка? Вот что я пробовал:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<telerik:RadComboBox runat="server" ID="rcb" Width="200px" HighlightTemplatedItems="true" 
    AllowCustomText="true" Text="Select Item" MaxHeight="250px" EnableTextSelection="false" AutoPostBack="true"
    OnClientSelectedIndexChanging="OnClientSelectedIndexChanging()">
    <Items>
        <telerik:RadComboBoxItem Value="0" Text="Select..." />
        <telerik:RadComboBoxItem Value="1" Text="Small" />
        <telerik:RadComboBoxItem Value="2" Text="Medium" />
        <telerik:RadComboBoxItem Value="3" Text="Large" />
    </Items>
    <ItemTemplate>        
            <asp:CheckBox onclick="stopPropagation(event);" ID="chk_Category" runat="server" Text="test" AutoPostBack="true" OnCheckedChanged="CheckBox1_CheckedChanged" />       
    </ItemTemplate>    
</telerik:RadComboBox>

<dnn:label ID="lbl" runat="server" Text="nothing" />

</ContentTemplate>
<Triggers>
    <asp:AsyncPostBackTrigger ControlID="rcb"/>    
</Triggers>
</asp:UpdatePanel>

<script type="text/javascript" language="javascript">
        // <![CDATA[
    function stopPropagation(e) {        
        e.cancelBubble = true;
        if (e.stopPropagation) {
            e.stopPropagation();
        }
    }
    function OnClientSelectedIndexChanging(item) {       
        return false;
    }

                // ]]>
</script>

person 1110    schedule 09.06.2011    source источник


Ответы (1)


Как правило, раскрывающийся список закрывается при нажатии на элемент; мы используем флажок в шаблоне поля со списком и закрываем только при нажатии на сам элемент (который выбирает элемент, и это сбивает с толку).

Проблема здесь в том, что каждый флажок отправляется обратно на сервер, так что это наиболее вероятная причина. Нужно ли отправлять ответ флажка обратно на сервер после нажатия на него? Альтернативный подход состоит в том, чтобы считывать элементы управления флажками из каждого элемента в пакетном режиме или каждый раз, когда элемент проверяется, сохранять значения отмеченных элементов в скрытом элементе управления.

В качестве альтернативы, к вашему сведению, для выпуска Q2 2011 г. появится эта функция: множественный выбор с режимом флажков. Таким образом, флажки будут функцией по умолчанию для поля со списком. Если у вас есть поддержка, вы можете обновить в ближайшее время.

ХТН.

person Brian Mains    schedule 09.06.2011
comment
Нужно ли отправлять ответ флажка обратно на сервер после нажатия на него? Да. Потому что каждый флажок является идентификатором для некоторого значения, которое находится в базе данных ind. - person 1110; 09.06.2011
comment
Эй, хорошо, тогда у вас всегда может быть эта проблема. Потому что происходит то, что ответ возвращается и стирает исходный ответ, где новый ответ закрывает раскрывающийся список. Что вам нужно сделать, так это программно открыть раскрывающийся список. Не знаю, сможете ли вы сделать это на стороне сервера. В качестве альтернативы, не будет ли захват идентификаторов и создание списка, который хранится в скрытом поле, все это делается с помощью JavaScript на стороне клиента, также работать в этом сценарии? - person Brian Mains; 09.06.2011
comment
В конце концов я решил использовать список флажков. Может быть, переключите его, когда выйдет новая версия телерика. Спасибо, в любом случае. - person 1110; 09.06.2011
comment
NP, я также использовал Telerik RadListBox внутри RadComboBox, и это сработало хорошо... - person Brian Mains; 09.06.2011