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

RadGrid grouping and paging

2 Answers 127 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Simon
Top achievements
Rank 1
Simon asked on 07 Nov 2012, 09:51 AM
Hello,

I programmed a RadGrid with grouping and paging.

With an older version of Telerik the paging was working well with the grouping. 
Since the upgrade from the last version, if I keep the grouping, the paging doesn't work.

I use a SqlDataSource that I programme in the code behind.

This is my code :
ASPX:
<%@ Page Title="Suivi des tickets" Language="C#" MasterPageFile="~/MasterPage.master"
    AutoEventWireup="true" CodeFile="SuiviTickets.aspx.cs" Inherits="Incidents_SuiviTickets" %>
 
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajax" %>
<%@ Register Src="Menu.ascx" TagName="Menu" TagPrefix="uc1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
    <style type="text/css">
        .left
        {
            margin-left: 30px;
        }
        .label
        {
            width: 110px;
            text-align: right;
            display: inline-block;
            font-style: italic;
            font-weight: bold;
            font-size: 1.1em;
            margin-right: 10px;
        }
        .labelTexte
        {
            display: inline-block;
        }
        .top
        {
            vertical-align: top;
        }
        .labelGauche
        {
            width: 100px;
            text-align: right;
            display: inline-block;
            vertical-align: top;
        }
        .ligne
        {
            margin: 10px;
            display: block;
        }
        .droite
        {
            float: right;
            clear: both;
            margin: 10px;
        }
        .floatLeft
        {
            float: left;
        }
        #ticket
        {
            height: 400px;
        }
        .fieldset
        {
            margin: 10px auto 0 auto;
            width: 90%;
            clear: both;
        }
        .fieldsetRecherche
        {
            margin: 10px 0;
        }
        .rechercheGauche
        {
            width: 55%;
            float: left;
        }
        .rechercheDroite
        {
            width: 40%;
            float: right;
        }
        .labelRecherche
        {
            width: 55px;
            text-align: right;
            display: inline-block;
        }
        .divEtatGauche
        {
            float: left;
        }
        .btnRechercher
        {
            float: right;
            top: 90px;
            position: relative;
        }
    </style>
 
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <uc1:Menu ID="Menu1" runat="server" />
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" DefaultLoadingPanelID="ralpIncident">
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="rgTickets">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="phGrid" />
                    <telerik:AjaxUpdatedControl ControlID="rgTickets" />
                    <telerik:AjaxUpdatedControl ControlID="phRecherche" />
                </UpdatedControls>
            </telerik:AjaxSetting>
            <telerik:AjaxSetting AjaxControlID="btnValider">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="phGrid" />
                    <telerik:AjaxUpdatedControl ControlID="rgTickets" />
                    <telerik:AjaxUpdatedControl ControlID="phRecherche" />
                </UpdatedControls>
            </telerik:AjaxSetting>
            <telerik:AjaxSetting AjaxControlID="btnAnnuler">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="phGrid" />
                    <telerik:AjaxUpdatedControl ControlID="rgTickets" />
                </UpdatedControls>
            </telerik:AjaxSetting>
            <telerik:AjaxSetting AjaxControlID="btnRechercher">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="phGrid" />
                    <telerik:AjaxUpdatedControl ControlID="rgTickets" />
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManager>
    <telerik:RadAjaxLoadingPanel ID="ralpIncident" runat="server" />
    <telerik:RadAjaxPanel ID="radAjaxPanel1" runat="server" LoadingPanelID="ralpIncident">
        <asp:PlaceHolder ID="phRecherche" runat="server">
            <fieldset class="fieldsetRecherche">
                <legend> Recherche </legend>
                <div class="rechercheGauche">
                    <span class="ligne">
                        <asp:TextBox ID="tbRecherche" runat="server" Width="447px"></asp:TextBox>
                        <ajax:TextBoxWatermarkExtender ID="tweRecherche" TargetControlID="tbRecherche" runat="server"
                            WatermarkText="Titre, description, demandeur(uid), n° ticket, ...">
                        </ajax:TextBoxWatermarkExtender>
                    </span><span class="ligne">
                        <asp:Label ID="lbAffecteA" Text="Affecté à" runat="server" class="labelRecherche"></asp:Label>
                        <telerik:RadComboBox ID="rcbAffecte" runat="server" DataTextField="prenomNom" DataSourceID="odsDSI"
                            DataValueField="ID" Height="100%" AppendDataBoundItems="true" Width="180px" DropDownWidth="180px"
                            CssClass="left">
                            <Items>
                                <telerik:RadComboBoxItem Value="0" runat="server" />
                            </Items>
                        </telerik:RadComboBox>
                    </span><span class="ligne">
                        <asp:Label ID="lbDate" Text="Date" runat="server" class="labelRecherche"></asp:Label>
                        <telerik:RadComboBox ID="rcbTypeDate" runat="server" Height="100%" AppendDataBoundItems="true"
                            Width="85px" DropDownWidth="85px" CssClass="left">
                            <Items>
                                <telerik:RadComboBoxItem Value="0" runat="server" />
                                <telerik:RadComboBoxItem Text="Création" Value="1" runat="server" />
                                <telerik:RadComboBoxItem Text="Affectation" Value="2" runat="server" />
                                <telerik:RadComboBoxItem Text="Traitement" Value="3" runat="server" />
                            </Items>
                        </telerik:RadComboBox>
                          entre  
                        <telerik:RadDatePicker ID="rdpDebut" runat="server" Width="100px">
                        </telerik:RadDatePicker>
                         et 
                        <telerik:RadDatePicker ID="rdpFin" runat="server" Width="100px">
                        </telerik:RadDatePicker>
                    </span>
                </div>
                <div class="rechercheDroite">
                    <asp:Label ID="lbRechercheEtat" Text="Etat" runat="server" class="labelRecherche floatLeft"></asp:Label>
                    <asp:CheckBoxList ID="cblEtat" CssClass="left floatLeft" DataSourceID="sdsEtats"
                        runat="server" OnDataBound="cblEtat_DataBound" DataTextField="libelle" DataValueField="idEtat"
                        RepeatColumns="1" RepeatDirection="Vertical">
                    </asp:CheckBoxList>
                    <asp:Button ID="btnRechercher" runat="server" Text="Rechercher" class="btnRechercher"
                        OnClick="btnRechercher_Click" />
                </div>
            </fieldset>
        </asp:PlaceHolder>
        <asp:PlaceHolder ID="phGrid" runat="server" Visible="true">
        <telerik:RadScriptBlock ID="rsbScript" runat="server">
            <script type="text/javascript">
                function showToolTip(element, idTicket) {
                    var tooltipManager = $find("<%= rtmTicket.ClientID %>");
 
                    // Si l'utilisateur survole la celulle avant que la page est chargée, il n'ya pas de gestionnaire créé
                    if (!tooltipManager) return;
 
                    //  Trouver l'info-bulle pour cet élément si elle a été créée
                    var tooltip = tooltipManager.getToolTipByElement(element);
 
                    //Create a tooltip if no tooltip exists for such element
                    if (!tooltip) {
                     tooltip = tooltipManager.createToolTip(element);
 
                     tooltip.set_value(idTicket);
                    }
 
                    // Créer une info-bulle si aucune info-bulle existe pour cet élément
                    element.onmouseover = null;
 
                    // afficher l'info-bulle
                    setTimeout(function() {
                     tooltip.show();
                    }, 10);
                }
 
            </script>
        </telerik:RadScriptBlock>  
            <telerik:RadToolTipManager ID="rtmTicket" runat="server" Position="MiddleLeft"
                HideEvent="LeaveTargetAndToolTip" Animation="Fade" RelativeTo="Mouse" Width="500px" AutoCloseDelay="0"
                IgnoreAltAttribute="true" >
            <WebServiceSettings Path="../WebServices/TooltipTickets.asmx" Method="GetToolTipData" />
        </telerik:RadToolTipManager>
            <telerik:RadGrid ID="rgTickets" runat="server" AutoGenerateColumns="false" DataSourceID="sdsTickets"
                ShowGroupPanel="True" OnItemCommand="rgTickets_ItemCommand"
                AllowPaging="true"  PageSize="25"
                OnPageIndexChanged="rgTickets_PageIndexChanged" OnPageSizeChanged="rgTickets_PageSizeChanged"
                AllowAutomaticDeletes="true" 
                AllowSorting="true" OnSortCommand="rgTickets_SortCommand"
                OnGroupsChanging="RgTickets_GroupsChanging"
                AllowFilteringByColumn="True"
                OnDeleteCommand="rgTickets_DeleteCommand" OnItemDataBound="rgTickets_ItemDataBound">
                <MasterTableView DataSourceID="sdsTickets" DataKeyNames="idTicket" GroupLoadMode="Server"
                    AllowMultiColumnSorting="true" AllowCustomSorting="true" AllowFilteringByColumn="true" >
                    <GroupByExpressions>
                        <telerik:GridGroupByExpression >
                         
                            <SelectFields>
                                <telerik:GridGroupByField FieldName="Etat" />
                                <telerik:GridGroupByField FieldName="nbTickets" HeaderText="Nb tickets" Aggregate="Count" />
                            </SelectFields>
                            <GroupByFields>
                                <telerik:GridGroupByField FieldName="idEtat" FieldAlias="Etats" SortOrder="Ascending" />
                            </GroupByFields>
                        </telerik:GridGroupByExpression>
                    </GroupByExpressions>
                    <Columns>
                        <telerik:GridBoundColumn UniqueName="idTicket" DataField="idTicket" HeaderText="Num Ticket"
                            HeaderStyle-Width="20px" ItemStyle-Width="20px" FilterControlWidth="20px" AutoPostBackOnFilter="false"
                            CurrentFilterFunction="equalto" FilterDelay="1000" ShowFilterIcon="false">
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn UniqueName="demandeur" DataField="demandeur" HeaderText="Demandeur"
                            ItemStyle-Wrap="true" AllowFiltering="false">
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn UniqueName="dateDemande" DataField="dateDemandeFormate"
                            HeaderText="Date demande" HeaderStyle-Width="80px" ItemStyle-Width="80px" DataFormatString="{0:dd/MM/yyyy}"
                            DataType="System.DateTime" FilterControlWidth="80px" AutoPostBackOnFilter="false"
                            CurrentFilterFunction="StartsWith" FilterDelay="1000" ShowFilterIcon="false">
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn UniqueName="titre" DataField="titre" HeaderText="Titre"
                            ItemStyle-Wrap="true " AllowFiltering="false">
                        </telerik:GridBoundColumn>
                        <telerik:GridTemplateColumn ShowFilterIcon="false" AllowFiltering="false" HeaderText="Description" UniqueName="description"
                            HeaderStyle-Width="120px">
                            <ItemTemplate>
                                <asp:Label ID="rgLbDescription" runat="server" Text='<%# Eval("descriptionCourte") %>'></asp:Label>
                            </ItemTemplate>
                        </telerik:GridTemplateColumn>
                        <telerik:GridBoundColumn UniqueName="IdAffecteA" DataField="IdAffecteA" Display="false">
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn UniqueName="affecteA" DataField="affecteA" HeaderText="Affecté à"
                            ItemStyle-Width="100px" ShowFilterIcon="false" AutoPostBackOnFilter="false">
                            <FilterTemplate>
                                <telerik:RadComboBox ID="rcbAffecteA" DataTextField="prenomNom" DataSourceID="odsDSI"
                                    DataValueField="ID" Height="100%" AppendDataBoundItems="true" Width="120px" DropDownWidth="200px"
                                    SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("IdAffecteA").CurrentFilterValue %>'
                                    runat="server" OnClientSelectedIndexChanged="rcbAffecteA_ClientSelectedIndexChanged">
                                    <Items>
                                        <telerik:RadComboBoxItem />
                                    </Items>
                                </telerik:RadComboBox>
                                <telerik:RadScriptBlock ID="RadScriptBlock2" runat="server">
 
                                    <script type="text/javascript">
                                        function rcbAffecteA_ClientSelectedIndexChanged(sender, args) {
                                            var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
                                            tableView.filter("IdAffecteA", args.get_item().get_value(), "EqualTo");
                                        
                                    </script>
 
                                </telerik:RadScriptBlock>
                            </FilterTemplate>
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn UniqueName="dateAffectation" DataField="dateAffectation"
                            HeaderText="Date affectation" DataFormatString="{0:dd/MM/yyyy}" HeaderStyle-Width="80px"
                            ItemStyle-Width="80px" AllowFiltering="false">
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn UniqueName="dateTraitement" DataField="dateTraitement" HeaderText="Date traitement"
                            HeaderStyle-Width="80px" ItemStyle-Width="80px" DataFormatString="{0:dd/MM/yyyy}"
                            DataType="System.DateTime" FilterControlWidth="80px" AutoPostBackOnFilter="false"
                            CurrentFilterFunction="StartsWith" FilterDelay="1000" ShowFilterIcon="false">
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn UniqueName="IdEtat" DataField="IdEtat" Display="false">
                        </telerik:GridBoundColumn>
                        <telerik:GridBoundColumn UniqueName="etat" DataField="etat" HeaderText="Etat" ShowFilterIcon="false"
                            AutoPostBackOnFilter="false" Display="true">
                            <FilterTemplate>
                                <telerik:RadComboBox ID="rcbEtatTic" DataTextField="libelle" DataSourceID="sdsEtats"
                                    DataValueField="IdEtat" Height="100%" AppendDataBoundItems="true" Width="50px"
                                    DropDownWidth="80px" SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("IdEtat").CurrentFilterValue %>'
                                    runat="server" OnClientSelectedIndexChanged="rcbEtatTic_ClientSelectedIndexChanged">
                                    <Items>
                                        <telerik:RadComboBoxItem />
                                    </Items>
                                </telerik:RadComboBox>
                                <telerik:RadScriptBlock ID="RadScriptBlock3" runat="server">
 
                                    <script type="text/javascript">
                                        function rcbEtatTic_ClientSelectedIndexChanged(sender, args) {
                                            var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
                                            tableView.filter("IdEtat", args.get_item().get_value(), "EqualTo");
                                        
                                    </script>
 
                                </telerik:RadScriptBlock>
                            </FilterTemplate>
                        </telerik:GridBoundColumn>
                        <telerik:GridTemplateColumn UniqueName="Editer" AllowFiltering="false" >
                            <ItemTemplate>
                                <a href="GestionTicket.aspx?ticket=<%# Eval("idTicket") %>" target="_blank">
                                    <img src="../Images/edit.gif" />
                                </a>
                            </ItemTemplate>
                        </telerik:GridTemplateColumn>
                        <telerik:GridButtonColumn ConfirmText="Annuler le ticket ?" ConfirmDialogType="Classic"
                            ConfirmTitle="Annuler" ButtonType="ImageButton" CommandName="Delete" Text="Annuler"
                            ImageUrl="../Images/cancel.gif" UniqueName="DeleteColumn" ItemStyle-Width="20px">
                            <ItemStyle HorizontalAlign="Center"></ItemStyle>
                        </telerik:GridButtonColumn>
                    </Columns>
                </MasterTableView>
                <ClientSettings AllowDragToGroup="true">
                </ClientSettings>
                <GroupingSettings ShowUnGroupButton="true"></GroupingSettings>
                <PagerStyle Mode="NextPrevAndNumeric" PageSizeLabelText="Par page :" PagerTextFormat="{5} ligne(s) dans {1}"
                    FirstPageToolTip="Première page" LastPageToolTip="Dernière page" NextPageToolTip="Page suivante"
                    PrevPageToolTip="Page précédente" PageButtonCount="15" AlwaysVisible="true" Position="TopAndBottom" />
            </telerik:RadGrid>
        </asp:PlaceHolder>
    </telerik:RadAjaxPanel>
    <asp:SqlDataSource ID="sdsTickets" runat="server" ConnectionString="<%$ ConnectionStrings:Intranet %>"
        ProviderName="<%$ ConnectionStrings:Intranet.ProviderName %>" DeleteCommand="UPDATE INT_Tickets SET idEtat=5 WHERE idTicket=?idTicket">
        <UpdateParameters>
            <asp:Parameter Name="idTicket" Type="Int32"></asp:Parameter>
        </UpdateParameters>
    </asp:SqlDataSource>
    <asp:SqlDataSource ID="sdsEtats" runat="server" ConnectionString="<%$ ConnectionStrings:Intranet %>"
        ProviderName="<%$ ConnectionStrings:Intranet.ProviderName %>" SelectCommand="SELECT * FROM INT_TicketsEtats ">
    </asp:SqlDataSource>
    <asp:ObjectDataSource ID="odsDSI" runat="server" SelectMethod="DSI" TypeName="AnnuaireEmployes">
    </asp:ObjectDataSource>
</asp:Content>

CS:
using System;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
 
 
using Telerik.Web.UI;
 
public partial class Incidents_SuiviTickets : PageBase
{
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        Menu1.Demandeur(Contexte.Utilisateur.UID);
    }
 
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)
        {
 
            if (Contexte.Droits.Contains("DSI"))
            {
                rcbAffecte.DataBind();
                rcbAffecte.SelectedValue = Contexte.Utilisateur.ID.ToString();
 
                cblEtat.DataBind();
                // on sélectionne la cb nouveau
                cblEtat.Items[0].Selected = true;
                // on sélectionne la cb pris en charge
                cblEtat.Items[1].Selected = true;
            }
            Bind();
        }
 
    }
 
    protected void cblEtat_DataBound(object sender, EventArgs e)
    {
        if (Contexte.Droits.Contains("DSI"))
        {
            //rcbAffecte.DataBind();
            // on sélectionne l'id de l'utilisatuer (DSI) connecté
            rcbAffecte.SelectedValue = Contexte.Utilisateur.ID.ToString();
            // on sélectionne la cb nouveau
            cblEtat.Items[0].Selected = true;
            // on sélectionne la cb pris en charge
            cblEtat.Items[1].Selected = true;
        }
    }
 
    protected void Bind()
    {
        // Supprimer les paramètres existants
        sdsTickets.SelectParameters.Clear();
 
        // Récupérer les infos des tickets avec libellé
        var requeteInfos = new StringBuilder();
        requeteInfos.Append("SELECT idTicket, uidDemandeur, demandeur, mailDemandeur, DATE_FORMAT(dateDemande, '%d/%m/%Y') as dateDemandeFormate, dateDemande, idAffecteA, affecteA, dateAffectation, DATE_FORMAT(dateTraitement, '%d/%m/%Y') as dateTraitement, titre, REPLACE(description, '\n', '<br/>') as description, if(LENGTH(description) > 15, CONCAT(SUBSTRING(description, 1, 15), '...'), SUBSTRING(description, 1, 15)) as descriptionCourte, e.idEtat, e.libelle as etat, (SELECT COUNT(*) FROM INT_Tickets) as nbTickets ");
        requeteInfos.AppendLine("FROM intranet.INT_Tickets t ");
        requeteInfos.AppendLine("LEFT JOIN INT_TicketsEtats e ON e.idEtat=t.idEtat ");
 
        // Afficher les tickets de l'utilisateur connecté sauf s'il fait pati de la DSI
        var where = new StringBuilder();
        if (!Contexte.Droits.Contains("DSI"))
        {
            phRecherche.Visible = false;
            where.AppendLine(string.Format(" WHERE uidDemandeur=?uidDemandeur ", Utilisateur.UID));
            sdsTickets.SelectParameters.Add("uidDemandeur", Utilisateur.UID);
            requeteInfos.AppendLine(where.ToString());
        }
        else
        {
            phRecherche.Visible = true;
 
            #region Recherche
            var filtre = new StringBuilder();
 
            // Filtre sur le n° ticket, titre, descriptino demandeur
            if (!string.IsNullOrEmpty(tbRecherche.Text))
            {
                filtre.Append(" ((idTicket=?idTicket ");
                filtre.Append(" OR titre LIKE ?text OR description LIKE ?text OR demandeur LIKE ?text) ");
                sdsTickets.SelectParameters.Add("idTicket", tbRecherche.Text);
                sdsTickets.SelectParameters.Add("text", string.Format("%{0}%", tbRecherche.Text));
            }
            // Filtre sur AffecteA
            if (Convert.ToInt32(rcbAffecte.SelectedValue) > 0)
            {
                if (!string.IsNullOrEmpty(filtre.ToString()))
                    filtre.Append(" AND idAffecteA=?idAffecteA ");
                else
                    filtre.Append(" (idAffecteA=?idAffecteA ");
 
                sdsTickets.SelectParameters.Add("idAffecteA", rcbAffecte.SelectedValue);
            }
            // Filtre par date
            if (Convert.ToInt32(rcbTypeDate.SelectedValue) > 0 && (rdpDebut.SelectedDate.HasValue || rdpFin.SelectedDate.HasValue))
            {
                switch (rcbTypeDate.SelectedItem.Text)
                {
                    case "Création":
                        if (!string.IsNullOrEmpty(filtre.ToString()))
                            filtre.Append(string.Format(" AND (DATE(dateDemande) BETWEEN ?debutDem AND ?finDem) "));
                        else
                            filtre.Append(string.Format(" ((DATE(dateDemande) BETWEEN ?debutDem AND ?finDem) "));
 
                        sdsTickets.SelectParameters.Add("debutDem", !rdpDebut.SelectedDate.HasValue ? rdpDebut.MinDate.ToString("yyyy-MM-dd") : !string.IsNullOrEmpty(rdpDebut.SelectedDate.Value.ToString("yyyy-MM-dd")) ? rdpDebut.SelectedDate.Value.ToString("yyyy-MM-dd") : rdpDebut.MinDate.ToString("yyyy-MM-dd"));
                        sdsTickets.SelectParameters.Add("finDem", !rdpFin.SelectedDate.HasValue ? rdpFin.MaxDate.ToString("yyyy-MM-dd") : !string.IsNullOrEmpty(rdpFin.SelectedDate.Value.ToString("yyyy-MM-dd")) ? rdpFin.SelectedDate.Value.ToString("yyyy-MM-dd") : rdpFin.MaxDate.ToString("yyyy-MM-dd"));
 
                        break;
                    case "Affectation":
                        if (!string.IsNullOrEmpty(filtre.ToString()))
                            filtre.Append(string.Format(" AND (DATE(dateAffectation) BETWEEN ?debutAff AND ?finAff) "));
                        else
                            filtre.Append(string.Format(" ((DATE(dateAffectation) BETWEEN ?debutAff AND ?finAff) "));
 
                        sdsTickets.SelectParameters.Add("debutDem", !rdpDebut.SelectedDate.HasValue ? rdpDebut.MinDate.ToString("yyyy-MM-dd") : !string.IsNullOrEmpty(rdpDebut.SelectedDate.Value.ToString("yyyy-MM-dd")) ? rdpDebut.SelectedDate.Value.ToString("yyyy-MM-dd") : rdpDebut.MinDate.ToString("yyyy-MM-dd"));
                        sdsTickets.SelectParameters.Add("finDem", !rdpFin.SelectedDate.HasValue ? rdpFin.MaxDate.ToString("yyyy-MM-dd") : !string.IsNullOrEmpty(rdpFin.SelectedDate.Value.ToString("yyyy-MM-dd")) ? rdpFin.SelectedDate.Value.ToString("yyyy-MM-dd") : rdpFin.MaxDate.ToString("yyyy-MM-dd"));
 
                        break;
                    case "Traitement":
                        if (!string.IsNullOrEmpty(filtre.ToString()))
                            filtre.Append(string.Format(" AND (DATE(dateTraitement) BETWEEN ?debutTra AND ?finTra) "));
                        else
                            filtre.Append(string.Format(" ((DATE(dateTraitement) BETWEEN ?debutTra AND ?finTra) "));
 
                        sdsTickets.SelectParameters.Add("debutDem", !rdpDebut.SelectedDate.HasValue ? rdpDebut.MinDate.ToString("yyyy-MM-dd") : !string.IsNullOrEmpty(rdpDebut.SelectedDate.Value.ToString("yyyy-MM-dd")) ? rdpDebut.SelectedDate.Value.ToString("yyyy-MM-dd") : rdpDebut.MinDate.ToString("yyyy-MM-dd"));
                        sdsTickets.SelectParameters.Add("finDem", !rdpFin.SelectedDate.HasValue ? rdpFin.MaxDate.ToString("yyyy-MM-dd") : !string.IsNullOrEmpty(rdpFin.SelectedDate.Value.ToString("yyyy-MM-dd")) ? rdpFin.SelectedDate.Value.ToString("yyyy-MM-dd") : rdpFin.MaxDate.ToString("yyyy-MM-dd"));
 
                        break;
                    default:
                        break;
                }
            }
 
            // Filtre sur les états
            var listeEtats = new StringBuilder();
            var filtreEtats = new StringBuilder();
            var nouveau = string.Empty;
            foreach (ListItem item in cblEtat.Items)
            {
                if (item.Selected && !item.Value.Equals("1"))
                {
                    listeEtats.Append(item.Value + ",");
                }
 
                if (item.Selected && item.Value.Equals("1"))
                {
                    nouveau = item.Value;
                }
            }
            if (listeEtats.ToString().EndsWith(","))
                listeEtats = listeEtats.Remove(listeEtats.Length - 1, 1);
 
            if (!string.IsNullOrEmpty(listeEtats.ToString()))
            {
                var etats = listeEtats.ToString().Split(',');
                if (!string.IsNullOrEmpty(filtre.ToString()))
                    filtreEtats.Append(" AND (");
                else
                    filtreEtats.Append(" (");
 
                foreach (var etat in etats)
                {
                    filtreEtats.Append(string.Format(" t.idEtat=?etat{0} OR ", etat));
                    sdsTickets.SelectParameters.Add(string.Format("etat{0}", etat), etat);
                }
                var fEtat = filtreEtats.ToString();
 
                if (fEtat.EndsWith(" OR "))
                {
                    fEtat = fEtat.Remove(fEtat.Length - (" OR ".Length), " OR ".Length);
                }
 
                if (!string.IsNullOrEmpty(filtre.ToString()))
                    filtre.Append(fEtat + ")");
                else
                    filtre.Append(fEtat);
            }
            #endregion
 
            if (string.IsNullOrEmpty(where.ToString()) && !string.IsNullOrEmpty(filtre.ToString()))
                where.Append(" WHERE ");
            if (!string.IsNullOrEmpty(filtre.ToString()))
            {
                requeteInfos.AppendLine(where.ToString());
                requeteInfos.Append(filtre.ToString());
                requeteInfos.Append(") ");
            }
            else
            {
                requeteInfos.AppendLine(where.ToString());
            }
            if (!string.IsNullOrEmpty(nouveau))
            {
                if (!string.IsNullOrEmpty(filtre.ToString()))
                {
                    requeteInfos.Append(" OR t.idEtat = ?idEtat ");
                }
                else
                {
                    if (string.IsNullOrEmpty(where.ToString()))
                    {
                        where.Append(" WHERE ");
                    }
                    else
                    {
                        where.Append(" AND ");
                    }
 
                    requeteInfos.Append(where + " t.idEtat = ?idEtat ");
                }
                sdsTickets.SelectParameters.Add("idEtat", nouveau);
            }
        }
 
        requeteInfos.Append(" ORDER BY t.idEtat asc, dateDemande desc");
 
        sdsTickets.SelectCommand = requeteInfos.ToString();
        sdsTickets.DataBind();
    }
 
    protected void rgTickets_PageIndexChanged(object sender, GridPageChangedEventArgs e)
    {
        Bind();
    }
 
    protected void rgTickets_PageSizeChanged(object sender, GridPageSizeChangedEventArgs e)
    {
        Bind();
    }
 
    protected void rgTickets_ItemCommand(object sender, GridCommandEventArgs e)
    {
        if (e.CommandName == RadGrid.NextPageCommandArgument || e.CommandName == RadGrid.PrevPageCommandArgument ||
            e.CommandName == RadGrid.FirstPageCommandArgument || e.CommandName == RadGrid.LastPageCommandArgument ||
            e.CommandName == RadGrid.PageCommandName || e.CommandName == RadGrid.SortCommandName ||
            e.CommandName == RadGrid.FilterCommandName )
        {
            Bind();
        }
    }
 
    protected void RgTickets_GroupsChanging(object sender, GridGroupsChangingEventArgs e)
    {
        Bind();
    }
 
    protected void rgTickets_SortCommand(object sender, GridSortCommandEventArgs e)
    {
        Bind();
    }
 
    protected void btnRechercher_Click(object sender, EventArgs e)
    {
        Bind();
    }
 
    protected void rgTickets_ItemDataBound(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridDataItem)
        {
            var item = e.Item as GridDataItem;
            if (!Contexte.Droits.Contains("DSI") && (string.IsNullOrEmpty(item["AffecteA"].Text) || item["AffecteA"].Text.Equals(" ")) && item["etat"].Text.Equals("Nouveau"))
            {
                item["DeleteColumn"].Visible = true;
            }
            else
                item["DeleteColumn"].Visible = false;
 
 
            var idTicket = item["idTicket"].Text.ToString();
            item["description"].Attributes["onmouseover"] = string.Format("showToolTip(this,{0});", idTicket);
        }
    }
 
    protected void rgTickets_DeleteCommand(object sender, GridCommandEventArgs e)
    {
        Bind();
    }
 
    protected bool GetDeleteVisible(int idEtat)
    {
        if (!Contexte.Droits.Contains("DSI"))
            return true;
 
        return false;
    }
 
    protected bool GetVisible()
    {
        if (!Contexte.Droits.Contains("DSI"))
            return false;
 
        return true;
    }
 
    public bool GetSuppression(int idUtilisateur)
    {
        if (idUtilisateur == Utilisateur.ID)
            return true;
 
        return false;
    }
 
    private class Message
    {
        public int IdMessage { get; set; }
        public string Texte { get; set; }
        public DateTime DateMessage { get; set; }
        public string Utilisateur { get; set; }
        public int IdUtilisateur { get; set; }
    }
}

Thank you for your answer,

Cordially,

Simon

2 Answers, 1 is accepted

Sort by
0
Accepted
Pavlina
Telerik team
answered on 07 Nov 2012, 10:16 AM
Hi,

This is a know issue, which will be fixed for the next official version of RadControls(Q3 2012 SP1). As a temporary workaround you can disable linq grouping, by setting EnableLinqGrouping property to false.
<MasterTableView ... EnableLinqGrouping="false">

All the best,
Pavlina
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
0
Simon
Top achievements
Rank 1
answered on 07 Nov 2012, 10:21 AM
Thank You for your quick reply

Simon
Tags
Grid
Asked by
Simon
Top achievements
Rank 1
Answers by
Pavlina
Telerik team
Simon
Top achievements
Rank 1
Share this question
or