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