Просмотр исходного кода

Ganzzeiliges Einfärben in der Nachtragsliste fertiggestellt!

Arne Diekmann 8 лет назад
Родитель
Сommit
067eed11a8

+ 15 - 19
GreenTree.Nachtragsmanagement.Web/Controllers/AppendixController.cs

@@ -136,7 +136,8 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
             {
                 var generator = new MVCReportGeneratonHelper();
 
-                generator.CustomizeColumn += new CustomizeColumnEventHandler(generator_CustomizeColumn);
+                //generator.CustomizeColumn += new CustomizeColumnEventHandler(generator_CustomizeColumn);
+                generator.CustomizeFormattingRules += new CustomizeFormattingRulesEventHandler(generator_CustomizeFormattingRules);
                 generator.CustomizeColumnsCollection += new CustomizeColumnsCollectionEventHandler(generator_CustomizeColumnsCollection);
                 generator.CustomizeGroupColumnSummary += new CustomizeColumnGroupSummaryEventHandler(generator_CustomizeGroupColumnSummary);
                 generator.CustomizeTotalColumnSummary += new CustomizeColumnTotalSummaryEventHandler(generator_CustomizeTotalColumnSummary);
@@ -176,31 +177,26 @@ namespace GreenTree.Nachtragsmanagement.Web.Controllers
         }
 
         /// <summary>
-        /// Customize specific fields
+        /// Customize formatting
         /// </summary>
         /// <param name="source"></param>
         /// <param name="e"></param>
-        private void generator_CustomizeColumn(object source, ControlCustomizationEventArgs e)
-        {
-            if (e.FieldName == "StateDescription")
-                e.Owner.BeforePrint += generator_BeforePrint;
-        }
-
-        /// <summary>
-        /// Customize printed controls
-        /// </summary>
-        /// <param name="sender"></param>
-        /// <param name="e"></param>
-        private void generator_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
+        private void generator_CustomizeFormattingRules(object source, CustomFormattingRulesEventArgs e)
         {
             var allStates = ViewData["AllStates"] as List<State>;
-            var stateDescription = ((XRControl)sender).Report.GetCurrentColumnValue<string>("StateDescription");
 
-            var state = allStates
-                .FirstOrDefault(s => s.Description == stateDescription);
+            foreach (var state in allStates)
+            {
+                var stateBackColor = new FormattingRule
+                {
+                    Condition = String.Format("[StateDescription] == \'{0}\'", state.Description),
+                    Name = String.Format("StateBackColor-{0}", state.Id)
+                };
 
-            if (state != null)
-                ((XRControl)sender).BackColor = ColorTranslator.FromHtml(state.HexColor);
+                stateBackColor.Formatting.BackColor = ColorTranslator.FromHtml(state.HexColor);
+
+                e.Rules.Add(stateBackColor);
+            }
         }
 
         /// <summary>

+ 20 - 0
GreenTree.Nachtragsmanagement.Web/Extensions/MVCxGridViewGeneratorHelper.cs

@@ -20,6 +20,7 @@ namespace GreenTree.Nachtragsmanagement.Web.Extensions
     {
         public delegate void CustomizeColumnsCollectionEventHandler(object source, ColumnsCreationEventArgs e);
         public delegate void CustomizeColumnEventHandler(object source, ControlCustomizationEventArgs e);
+        public delegate void CustomizeFormattingRulesEventHandler(object source, CustomFormattingRulesEventArgs e);
         public delegate void CustomizeColumnTotalSummaryEventHandler(object source, ColumnSummaryCreationEventArgs e);
         public delegate void CustomizeColumnGroupSummaryEventHandler(object source, ColumnSummaryCreationEventArgs e);
 
@@ -37,6 +38,7 @@ namespace GreenTree.Nachtragsmanagement.Web.Extensions
 
             public event CustomizeColumnsCollectionEventHandler CustomizeColumnsCollection;
             public event CustomizeColumnEventHandler CustomizeColumn;
+            public event CustomizeFormattingRulesEventHandler CustomizeFormattingRules;
             public event CustomizeColumnTotalSummaryEventHandler CustomizeTotalColumnSummary;
             public event CustomizeColumnGroupSummaryEventHandler CustomizeGroupColumnSummary;
 
@@ -242,6 +244,13 @@ namespace GreenTree.Nachtragsmanagement.Web.Extensions
                         detailsWidth.Add(columns[i].GridViewColumn, cell2.WidthF);
                     }
                 }
+
+                if (CustomizeFormattingRules != null)
+                    CustomizeFormattingRules(report, new CustomFormattingRulesEventArgs { Rules = report.FormattingRuleSheet });
+
+                foreach (var rule in report.FormattingRuleSheet)
+                    detailTable.FormattingRules.Add(rule);                
+
                 headerTable.Rows.Add(row);
                 headerTable.Width = pagewidth;
                 headerTable.LocationF = new PointF(groupedColumns.Count * subGroupOffset, 0);
@@ -602,6 +611,17 @@ namespace GreenTree.Nachtragsmanagement.Web.Extensions
             }
         }
 
+        public class CustomFormattingRulesEventArgs : EventArgs
+        {
+            private FormattingRuleSheet rules;
+
+            public FormattingRuleSheet Rules
+            {
+                get { return rules; }
+                set { rules = value; }
+            }
+        }
+
         public class ControlCustomizationEventArgs : EventArgs
         {
             XRControl owner;