GridDateTimeColumn filtering issue

2 posts, 1 answers
  1. ITeQ
    ITeQ avatar
    2 posts
    Member since:
    May 2013

    Posted 21 Apr Link to this post

    Hi,

     

    I'am using the RadGrid with a GridDateTimeColumn with rangefiltering. The custom lay-out is to put both calender filters next to each other. I need to display them below each other and therefor I've used the solution to rearange them in the ItemDataBound event.

    However when I use the nested view in the grid, the filter resets to it's original lay-out.

     

    The problem is the nestedview triggers the databound event with the GridNestedViewItem and not the GridFilteringItem.

     

    Could you please help?

     

    Code:

    <telerik:RadGrid ID="rgdLaadOrder" runat="server" CellSpacing="0" DataSourceID="qOverview" GridLines="None" Skin="AlfonsFreriks" EnableEmbeddedSkins="false"
       PageSize="10" ClientSettings-EnableRowHoverStyle="True" AllowPaging="true" OnItemCommand="rgdLaadOrder_ItemCommand" Width="1124px" OnInit="rgdLaadOrder_Init"
       AllowFilteringByColumn="True" AutoGenerateColumns="False" EnableLinqExpressions="False" OnItemDataBound="rgdLaadOrder_ItemDataBound" OnItemCreated="rgdLaadOrder_ItemCreated">
       <PagerStyle Mode="NextPrevAndNumeric" />
       <ExportSettings OpenInNewWindow="true" FileName="Export">
         <Pdf ContentFilter="Ascii85" BorderType="AllBorders" PageWidth="297mm" PageHeight="210mm">
           <PageHeader>
             <LeftCell TextAlign="Left" />
             <MiddleCell TextAlign="Left" />
             <RightCell TextAlign="Left" />
           </PageHeader>
         </Pdf>
       </ExportSettings>
       <ClientSettings EnableRowHoverStyle="True" EnablePostBackOnRowClick="True">
         <Selecting AllowRowSelect="true" />
       </ClientSettings>
       <MasterTableView NoMasterRecordsText="Er zijn geen laadorders te tonen" AutoGenerateColumns="false" TableLayout="Auto" HierarchyLoadMode="ServerOnDemand"
         DataKeyNames="LaadOrderNummer, LAADADRESNUMMER, LOSADRESNUMMER">
         <NestedViewSettings DataSourceID="qItem">
           <ParentTableRelation>
             <telerik:GridRelationFields DetailKeyField="LaadOrderNummer" MasterKeyField="LaadOrderNummer" />
             <telerik:GridRelationFields DetailKeyField="LaadAdresNummer" MasterKeyField="LAADADRESNUMMER" />
             <telerik:GridRelationFields DetailKeyField="LosAdresNummer" MasterKeyField="LOSADRESNUMMER" />
           </ParentTableRelation>
         </NestedViewSettings>
         <NestedViewTemplate>
           <asp:Repeater ID="rptAgendaItem" runat="server" DataSourceID="qItem">
           <ItemTemplate>
             <div class="cellLinks">
               <%# Eval("Titel") %>
             </div>
             <div class="cellRechts">
               <%# Eval("Waarden") %>
             </div>
           </ItemTemplate>
           <SeparatorTemplate>
             <br style="clear:both;" />
           </SeparatorTemplate>
         </asp:Repeater>
         </NestedViewTemplate>
         <Columns>
           <telerik:GridTemplateColumn AllowFiltering="false" UniqueName="ncr" HeaderText="NCR" Display="false">
             <HeaderStyle Width="28px" />
             <ItemStyle Width="28px" />
             <ItemTemplate >
               <asp:Image runat="server" ID="imgStatus" ImageUrl="~/Assets/Images/status/INFO_RED.png" Visible='<%# (int)Eval("AANTALNCR") > 0 %>' />
             </ItemTemplate>
           </telerik:GridTemplateColumn>
           <telerik:GridBoundColumn DataField="LaadOrderNummer" HeaderText="Nummer" UniqueName="LaadOrderNummer" AllowFiltering="false" Display="false"/>
           <telerik:GridBoundColumn DataField="LaadInfoDefinitiefJN" HeaderText="LaadInfoDefinitiefJN" UniqueName="LaadInfoDefinitiefJN" AllowFiltering="false" Display="false"/>
           <telerik:GridBoundColumn DataField="LosInfoDefinitiefJN" HeaderText="LosInfoDefinitiefJN" UniqueName="LosInfoDefinitiefJN" AllowFiltering="false" Display="false"/>
           <telerik:GridBoundColumn DataField="LAADADRESNUMMER" HeaderText="LAADADRESNUMMER" UniqueName="LAADADRESNUMMER" AllowFiltering="false" Display="false"/>
           <telerik:GridBoundColumn DataField="LOSADRESNUMMER" HeaderText="LOSADRESNUMMER" UniqueName="LOSADRESNUMMER" AllowFiltering="false" Display="false"/>
     
           <telerik:GridTemplateColumn AllowFiltering="false" UniqueName="link" HeaderText="" Exportable="false">
             <HeaderStyle Width="44px" />
             <ItemTemplate >
               <asp:Image runat="server" ID="imgLink" ImageUrl="~/Assets/Images/afje_wit.png" />
             </ItemTemplate>
           </telerik:GridTemplateColumn>
           <telerik:GridBoundColumn DataField="OPDRACHTNUMMERKLANT" HeaderText="Klant ref." UniqueName="OPDRACHTNUMMERKLANT"
             AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" ShowFilterIcon="false" FilterControlWidth="100%">
             <HeaderStyle Width="180px" />
           </telerik:GridBoundColumn>
           <telerik:GridBoundColumn DataField="LAADORDERDISPLAYNUMMER" HeaderText="Laadordernr" UniqueName="LAADORDERDISPLAYNUMMER"
             AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" ShowFilterIcon="false" FilterControlWidth="100%">
             <HeaderStyle Width="120px" />
           </telerik:GridBoundColumn>
           <telerik:GridDateTimeColumn DataField="LAADDATUM" HeaderText="Laaddatum" UniqueName="LAADDATUM"
             AutoPostBackOnFilter="true" CurrentFilterFunction="EqualTo" ShowFilterIcon="false" DataType="System.DateTime"
             DataFormatString="{0:dd-MM-yyyy}" FilterControlWidth="106px" EnableTimeIndependentFiltering="true" EnableRangeFiltering="true">
             <HeaderStyle Width="160px" />
           </telerik:GridDateTimeColumn>
           <telerik:GridBoundColumn DataField="LAADADRESPLAATS" HeaderText="Laadplaats" UniqueName="LAADADRESPLAATS"
             AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" ShowFilterIcon="false" FilterControlWidth="100%">
             <HeaderStyle Width="200px" />
           </telerik:GridBoundColumn>
           <telerik:GridDateTimeColumn DataField="LOSDATUM" HeaderText="Losdatum" UniqueName="LOSDATUM"
             AutoPostBackOnFilter="true" CurrentFilterFunction="EqualTo" ShowFilterIcon="false" DataType="System.DateTime"
             DataFormatString="{0:dd-MM-yyyy}" FilterControlWidth="106px" EnableTimeIndependentFiltering="true" EnableRangeFiltering="true">
             <HeaderStyle Width="160px" />
           </telerik:GridDateTimeColumn>
           <telerik:GridBoundColumn DataField="LOSADRESPLAATS" HeaderText="Losplaats" UniqueName="LOSADRESPLAATS"
             AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" ShowFilterIcon="false" FilterControlWidth="100%">
             <HeaderStyle Width="200px" />
           </telerik:GridBoundColumn>
           <telerik:GridTemplateColumn AllowFiltering="false" UniqueName="ncr" HeaderText="NCR" Exportable="false">
             <HeaderStyle Width="40px" />
             <ItemTemplate >
               <asp:ImageButton runat="server" ID="imgStatusRed" ImageUrl="~/Assets/Images/status/bullet_ball_glass_red.png" Visible='<%# (int)Eval("AANTALNCR") > 0 %>' CommandName="NCR_Click" />
               <asp:Image runat="server" ID="imgStatusGreen" ImageUrl="~/Assets/Images/status/bullet_ball_glass_green.png" Visible='<%# (int)Eval("AANTALNCR") == 0 %>' />
             </ItemTemplate>
           </telerik:GridTemplateColumn>
         </Columns>
         <PagerStyle PageSizes="10, 25, 50, 75, 100" PagerTextFormat="{4} Er zijn <strong>{5}</strong> laadorders die overeenkomen met de zoekcriteria"
           PageSizeLabelText="Resultaten per pagina:" AlwaysVisible="true" />
       </MasterTableView>
     </telerik:RadGrid>

     

        protected void rgdLaadOrder_ItemDataBound(object sender, GridItemEventArgs e)
        {
          if (e.Item is GridFilteringItem)
          {
            GridFilteringItem filterItem = e.Item as GridFilteringItem;
     
            (filterItem["LAADDATUM"].Controls[0] as LiteralControl).Text = "<span style='width:45px; display:inline-block;'>" + WebTranslate.GetTranslation("rgdLaadOrderVanFilter") + "</span>";
            (filterItem["LAADDATUM"].Controls[3] as LiteralControl).Text = "<br /><span style='width:45px; display:inline-block;'>" + WebTranslate.GetTranslation("rgdLaadOrderTotFilter") + "</span>";
     
            (filterItem["LOSDATUM"].Controls[0] as LiteralControl).Text = "<span style='width:45px; display:inline-block;'>" + WebTranslate.GetTranslation("rgdLaadOrderVanFilter") + "</span>";
            (filterItem["LOSDATUM"].Controls[3] as LiteralControl).Text = "<br /><span style='width:45px; display:inline-block;'>" + WebTranslate.GetTranslation("rgdLaadOrderTotFilter") + "</span>";
          }
    }

     

  2. Answer
    Eyup
    Admin
    Eyup avatar
    3009 posts

    Posted 26 Apr Link to this post

    Hi,

    You can try the logic suggested in the following post using ItemCreated instead of ItemDataBound:
    http://www.telerik.com/forums/basic-filtering-datetime-range#J6au2nck4EKUQCxcC-8u9g

    I hope this will prove helpful.

    Regards,
    Eyup
    Telerik
    Do you need help with upgrading your ASP.NET AJAX, WPF or WinForms projects? Check the Telerik API Analyzer and share your thoughts.
  3. UI for ASP.NET Ajax is Ready for VS 2017
Back to Top