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:
CS:
Thank you for your answer,
Cordially,
Simon
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