Не удается отобразить модальный всплывающий экстендер после команды фильтра radgrid - PullRequest
0 голосов
/ 05 мая 2011

У меня есть элемент управления, который отображается в модальном всплывающем расширителе. Этот элемент управления содержит элемент RadGrid. Мне пришлось создать пользовательский фильтр с использованием FilterTemplate, и я получил обратный вызов с правильным именем команды. Однако модальный всплывающий расширитель не отображает вызываемый метод Show ().

Возможно, лучше всего показать это с кодом.

Модальное расширение всплывающего окна по умолчанию. ASPX:

<asp:Panel ID="pmpSetDostopIS" runat="server" Width="80%" Height="80%" ScrollBars="Vertical" CssClass="modalPopup" Style="display: none">
    <div align="center">
        <asp:Label ID="Label2" runat="server" Text="DostopIS" Font-Bold="True"></asp:Label>    
    </div>                            
    <hr />
    <asp:Button ID="btnShowPopupSetDostopIS" runat="server" Style="display: none" />
    <asp:ModalPopupExtender ID="pmpDostopISExtender" runat="server" TargetControlID="btnShowPopupSetDostopIS"
        PopupControlID="pmpSetDostopIS" BackgroundCssClass="modalBackground" DropShadow="false">
    </asp:ModalPopupExtender>
    <uc7:ppDostopISEdit ID="ucdeDostopIS" runat="server" />
</asp:Panel>

ppDostopISEdit.ascx:

<telerik:RadGrid ID="rgDostopISLotusNotes" AllowMultiRowSelection="True" AllowPaging="False" AllowSorting="True" AllowAutomaticDeletes="False" 
    DataSourceID="odsLNDostop" EnableLinqExpressions="false" GridLines="None" runat="server">
    <MasterTableView AutoGenerateColumns="False" AllowFilteringByColumn="True" TableLayout="Fixed" DataKeyNames="SLNS_ID_LN_SKUPINA" DataSourceID="odsLNDostop">
        <Columns>
            <telerik:GridTemplateColumn AllowFiltering="false" UniqueName="SELECTION">
                <HeaderStyle Width="30px" />
                <HeaderTemplate>
                    <asp:CheckBox id="chkbxLNAll" OnCheckedChanged="chkbxLNAll_CheckedChanged" AutoPostBack="True" runat="server"></asp:CheckBox>
                </HeaderTemplate>
                <ItemTemplate>
                    <asp:CheckBox id="chkbxLNSelect" Checked='<%# Bind("CHECKED") %>' OnCheckedChanged="chkbxSelect_CheckedChanged" AutoPostBack="True" runat="server"></asp:CheckBox>
                </ItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridBoundColumn DataField="NAZIV" HeaderText="Skupina" SortExpression="NAZIV" UniqueName="NAZIV" AutoPostBackOnFilter="false" CurrentFilterFunction="Contains" FilterControlWidth="200px" FilterDelay="500" ShowFilterIcon="true">
                <ItemStyle Wrap="False" />
                <FilterTemplate>
                    <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">
                         <script type="text/javascript">
                             function filterLnGrid(sender, args) {
                                 var strKey = args.get_keyCode();
                                 if (strKey == "13") {
                                     var tableView = $find("<%# CType(Container, GridItem).OwnerTableView.ClientID %>");
                                     tableView.filter("NAZIV", sender.get_value(), "Contains");
                                 }
                             }
                         </script>
                     </telerik:RadScriptBlock>
                     <asp:Literal runat="server" Text="Išči"></asp:Literal>
                     <telerik:RadTextBox runat="server" Text="" ClientEvents-OnKeyPress="filterLnGrid" AutoPostBack="false"></telerik:RadTextBox>
                 </FilterTemplate>
             </telerik:GridBoundColumn>
        </Columns>
    </MasterTableView>
    <ClientSettings EnableRowHoverStyle="true">
    </ClientSettings>
</telerik:RadGrid>

ppDostopISEdit.ascx.vb (отрывок):

Protected Sub rgDostopISLotusNotes_ItemCommand(ByVal sender As Object, ByVal e As GridCommandEventArgs) Handles rgDostopISLotusNotes.ItemCommand
    Call m_pmpExtender.Show()
End Sub

Теперь я застрял, поскольку то же самое работает для пользовательской команды на каком-то другом RadGrid.

Edit:

Дальнейшая отладка показала, что это проблема двойной обратной передачи. Тем не менее, оба постбэка выдаются этим же RadGrid. Один для Filter ItemCommand, другой нет, поэтому я предполагаю, что это вызвано применением фильтра к RadGrid.

1 Ответ

0 голосов
/ 05 мая 2011

Я подозреваю, что всплывающее событие является причиной второй обратной передачи здесь. Скорее всего, вам нужно явно остановиться, как показано в методе SupressBubbling js здесь .

...