0

我有一个显示在模式弹出式扩展器中的控件。该控件包含RadGrid元素。我必须使用FilterTemplate创建一个自定义过滤器,并使用正确的命令名称设置发送回调。但是,模式弹出式扩展程序不显示正在调用的Show()方法。无法在radgrid过滤器命令后显示模式弹出式扩展器

也许最好用代码展示它。在Default.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上的自定义命令。

编辑:

进一步的调试表明这是双重回发问题。但是,这两个回发都是由这个相同的RadGrid发布的。一个是Filter ItemCommand,另一个不是,所以我假设它是由对RadGrid应用过滤器引起的。

回答

0

我怀疑事件冒泡是第二次回发的原因。如SupressBubling js方法here所示,最有可能需要明确停止。

+0

虽然没有帮助:( – 2011-05-06 07:02:20

相关问题