text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 17, 17 select t.Name, s.Name as Scenario_Name, s.ProjectedRevenue, s.ExpectedGrossMargin, s.CalculatedGrossMargin, s.CalculatedGrossMargin_LM, s.StartDate, s.EndDate, s.TDDirectCosts, s.TDDirectCosts_LM, s.BUDirectCosts, s.BUDirectCosts_LM, s.CostSavings, s.CostSavingsStartDate, t.id as TeamId, s.CostSavingsEndDate, s.CostSavingsType, p.IsRevenueGenerating, p.Name as Project_Name, p.Priority, p.Probability, p.Deadline, st.Name as Status_Name from Project p, Scenario s, Team t, Team2Project tp, Status st where t.Id = tp.TeamId and p.Id = tp.ProjectId and s.ParentId = p.Id and st.Id = p.StatusId PERhdGFTZXQgTmFtZT0ic3FsRGF0YVNvdXJjZTEiPjxWaWV3IE5hbWU9IkN1c3RvbVNxbFF1ZXJ5Ij48RmllbGQgTmFtZT0iTmFtZSIgVHlwZT0iU3RyaW5nIiAvPjxGaWVsZCBOYW1lPSJTY2VuYXJpb19OYW1lIiBUeXBlPSJTdHJpbmciIC8+PEZpZWxkIE5hbWU9IlByb2plY3RlZFJldmVudWUiIFR5cGU9IkRlY2ltYWwiIC8+PEZpZWxkIE5hbWU9IkV4cGVjdGVkR3Jvc3NNYXJnaW4iIFR5cGU9IkRlY2ltYWwiIC8+PEZpZWxkIE5hbWU9IkNhbGN1bGF0ZWRHcm9zc01hcmdpbiIgVHlwZT0iRGVjaW1hbCIgLz48RmllbGQgTmFtZT0iQ2FsY3VsYXRlZEdyb3NzTWFyZ2luX0xNIiBUeXBlPSJEZWNpbWFsIiAvPjxGaWVsZCBOYW1lPSJTdGFydERhdGUiIFR5cGU9IkRhdGVUaW1lIiAvPjxGaWVsZCBOYW1lPSJFbmREYXRlIiBUeXBlPSJEYXRlVGltZSIgLz48RmllbGQgTmFtZT0iVEREaXJlY3RDb3N0cyIgVHlwZT0iRGVjaW1hbCIgLz48RmllbGQgTmFtZT0iVEREaXJlY3RDb3N0c19MTSIgVHlwZT0iRGVjaW1hbCIgLz48RmllbGQgTmFtZT0iQlVEaXJlY3RDb3N0cyIgVHlwZT0iRGVjaW1hbCIgLz48RmllbGQgTmFtZT0iQlVEaXJlY3RDb3N0c19MTSIgVHlwZT0iRGVjaW1hbCIgLz48RmllbGQgTmFtZT0iQ29zdFNhdmluZ3MiIFR5cGU9IkRlY2ltYWwiIC8+PEZpZWxkIE5hbWU9IkNvc3RTYXZpbmdzU3RhcnREYXRlIiBUeXBlPSJEYXRlVGltZSIgLz48RmllbGQgTmFtZT0iVGVhbUlkIiBUeXBlPSJHdWlkIiAvPjxGaWVsZCBOYW1lPSJDb3N0U2F2aW5nc0VuZERhdGUiIFR5cGU9IkRhdGVUaW1lIiAvPjxGaWVsZCBOYW1lPSJDb3N0U2F2aW5nc1R5cGUiIFR5cGU9IkludDE2IiAvPjxGaWVsZCBOYW1lPSJJc1JldmVudWVHZW5lcmF0aW5nIiBUeXBlPSJCb29sZWFuIiAvPjxGaWVsZCBOYW1lPSJQcm9qZWN0X05hbWUiIFR5cGU9IlN0cmluZyIgLz48RmllbGQgTmFtZT0iUHJpb3JpdHkiIFR5cGU9IkludDMyIiAvPjxGaWVsZCBOYW1lPSJQcm9iYWJpbGl0eSIgVHlwZT0iRGVjaW1hbCIgLz48RmllbGQgTmFtZT0iRGVhZGxpbmUiIFR5cGU9IkRhdGVUaW1lIiAvPjxGaWVsZCBOYW1lPSJTdGF0dXNfTmFtZSIgVHlwZT0iU3RyaW5nIiAvPjwvVmlldz48L0RhdGFTZXQ+ using System; using System.Web; using System.Linq; using System.Collections.Generic; using System.Xml.Serialization; using System.IO; using System.Xml; using DevExpress.Data.Filtering; List<GroupField> _sortinParams = new List<GroupField>(); const string SortedColumnSuffix_Ascending = " ▼"; const string SortedColumnSuffix_Descending = " ▲"; private void ReportBase_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { if (this.Parameters.Any<DevExpress.Data.IParameter>(t=>t.Name == "__RPT_BASE_PARAM_SORT_FIELD") && this.Parameters.Any<DevExpress.Data.IParameter>(t=>t.Name == "__RPT_BASE_PARAM_SORT_DIR")) { var keysXml = (string)this.Parameters["__RPT_BASE_PARAM_SORT_FIELD"].Value; var valuesXml = (string)this.Parameters["__RPT_BASE_PARAM_SORT_DIR"].Value; if (!string.IsNullOrWhiteSpace(keysXml) && !string.IsNullOrWhiteSpace(valuesXml)) { var keys = Deserialize<List<string>>(keysXml); var values = Deserialize<List<bool>>(valuesXml); if (keys != null && values != null && keys.Count > 0 && keys.Count == values.Count) for (var i=0; i<keys.Count; i++) { _sortinParams.Add(new GroupField(keys[i], values[i] ? XRColumnSortOrder.Ascending : XRColumnSortOrder.Descending)); } } Detail.SortFields.Clear(); Detail.SortFields.AddRange(_sortinParams.ToArray()); } } private void ReportBase_DataSourceDemanded(object sender, System.EventArgs e) { List<CriteriaOperator> operators = new List<CriteriaOperator>(); Guid[] teams = new Guid[0]; if (this.Parameters["Team"] != null) { teams = (Guid[])this.Parameters["Team"].Value; } if (teams.Length > 0) { operators.Add(new InOperator("TeamId", teams)); } GroupOperator collection = new GroupOperator(GroupOperatorType.And, operators); this.FilterString = collection.ToString(); } public void HeaderCell_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { XRLabel headerCell = sender as XRLabel; string fieldName = (string)headerCell.Tag; GroupField sort = _sortinParams.Find(sortField => sortField.FieldName == fieldName); // рисуем иконку направления сортировки, если это поле перечислено в _sortinParams сво-ве headerCell.Text = headerCell.Text.Replace(SortedColumnSuffix_Ascending, ""); headerCell.Text = headerCell.Text.Replace(SortedColumnSuffix_Descending, ""); if (sort != null) { headerCell.Text += (sort.SortOrder == XRColumnSortOrder.Ascending) ? SortedColumnSuffix_Ascending : SortedColumnSuffix_Descending; } headerCell.NavigateUrl = String.Format("javascript:void('{0}')", headerCell.Tag); } public T Deserialize<T>(string input) where T : class { System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(T)); using (StringReader sr = new StringReader(input)) return (T)ser.Deserialize(sr); }