This is a migrated thread and some comments may be shown as answers.

GridDateTimeColumn filtering issue

1 Answer 144 Views
Grid
This is a migrated thread and some comments may be shown as answers.
ITeQ
Top achievements
Rank 1
ITeQ asked on 21 Apr 2016, 07:34 AM

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

 

1 Answer, 1 is accepted

Sort by
0
Accepted
Eyup
Telerik team
answered on 26 Apr 2016, 07:30 AM
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.
Tags
Grid
Asked by
ITeQ
Top achievements
Rank 1
Answers by
Eyup
Telerik team
Share this question
or