using DevExpress.Data; using DevExpress.Utils; using DevExpress.Web; using DevExpress.Web.ASPxThemes; using DevExpress.Web.Mvc; using DevExpress.Web.Mvc.UI; using GreenTree.Nachtragsmanagement.Core.Authentication; using GreenTree.Nachtragsmanagement.Web.Models.Appendix; using System; using System.Linq; using System.Collections.Generic; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.Mvc.Html; using GreenTree.Nachtragsmanagement.Web.Models.Deviation; namespace GreenTree.Nachtragsmanagement.Web.Extensions { public static class GridViewSettingsHelper { /// /// Current user context /// public static UserContext _userContext = Core.CommonHelper.UserContext(); /// /// Creates GridViewSettings for the site gridView /// /// Current HtmlHelper context. public static GridViewSettings SiteGridViewSettings(this System.Web.Mvc.HtmlHelper html) { var s = new GridViewSettings(); s.Name = "devGridViewSite"; s.KeyFieldName = "Id"; s.CallbackRouteValues = new { Controller = "Site", Action = "PartialSites" }; s.Width = Unit.Percentage(99); s.Settings.ShowHeaderFilterButton = true; s.Settings.ShowFilterRow = true; s.Settings.ShowFilterRowMenu = false; s.Settings.ShowFooter = true; s.Settings.ShowGroupPanel = true; s.Settings.AutoFilterCondition = AutoFilterCondition.Contains; s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto; s.Settings.VerticalScrollableHeight = (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1) ? 400 : (int)html.ViewData["ScrollHeight"]; s.SettingsExport.Landscape = true; s.SettingsExport.FileName = "Baustellenliste"; s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel); s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel); s.SettingsBehavior.EnableCustomizationWindow = true; s.SettingsBehavior.AllowHeaderFilter = true; s.SettingsPager.AlwaysShowPager = true; s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.NextColumn; s.SettingsCookies.Enabled = true; s.SettingsCookies.CookiesID = "siteGridStateCookie"; s.Toolbars.Add(t => { t.Items.Add(i => { i.Text = "Baustelle hinzufügen"; i.Name = "AddSite"; i.Image.IconID = IconID.ActionsAdd16x16; }); var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh); refreshItem.Text = "Aktualisieren"; var expandItem = t.Items.Add(GridViewToolbarCommand.FullExpand); expandItem.Text = "Alle aufklappen"; var collapseItem = t.Items.Add(GridViewToolbarCommand.FullCollapse); collapseItem.Text = "Alle einklappen"; var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter); filterItem.Text = "Filter entfernen"; t.Items.Add(i => { i.Text = "Spalten anzeigen / ausblenden"; i.Name = "ToggleColumnChooser"; i.Image.IconID = IconID.OtherViewgridlines16x16gray; i.BeginGroup = true; }); t.Items.Add(i => { i.Text = "Drucken"; i.Name = "Print"; i.Image.IconID = IconID.PrintDefaultprinter16x16; i.BeginGroup = true; }); }); if (_userContext.CurrentUser.HasFunction("Site-Sites-Edit") || _userContext.CurrentUser.HasFunction("Site-Sites-Delete")) { s.Columns.Add(column => { column.Caption = "#"; column.SetDataItemTemplateContent(c => { if (_userContext.CurrentUser.HasFunction("Site-Sites-Edit")) html.ViewContext.Writer.Write( "Bearbeiten"); if (_userContext.CurrentUser.HasFunction("Site-Sites-Delete")) html.ViewContext.Writer.Write( "
Löschen"); }); column.Caption = "#"; column.Settings.AllowDragDrop = DefaultBoolean.False; column.Settings.AllowSort = DefaultBoolean.False; column.Width = new Unit(100, UnitType.Pixel); }); } s.Columns.Add(column => { column.Caption = "Kostenstelle"; column.FieldName = "CustomNumber"; column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; column.MinWidth = 100; column.Width = new Unit(8, UnitType.Percentage); }); s.Columns.Add(column => { column.Caption = "Bauvorhaben"; column.FieldName = "Description"; column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; column.Width = new Unit(20, UnitType.Percentage); }); s.Columns.Add(column => { column.Caption = "Start"; column.FieldName = "Start"; column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy"; column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.DateRangePicker; column.MinWidth = 110; column.Width = new Unit(8, UnitType.Percentage); }); s.Columns.Add(column => { column.Caption = "Ende"; column.FieldName = "End"; column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy"; column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.DateRangePicker; column.MinWidth = 110; column.Width = new Unit(8, UnitType.Percentage); }); s.Columns.Add(column => { column.Caption = "Offene VA"; column.FieldName = "DeviationDescription"; column.Visible = false; column.MinWidth = 150; column.Width = new Unit(12, UnitType.Percentage); }); s.Columns.Add(column => { column.Caption = "VA-Summe"; column.FieldName = "DeviationValue"; column.PropertiesEdit.DisplayFormatString = "c2"; column.Visible = false; column.MinWidth = 120; column.Width = new Unit(10, UnitType.Percentage); }); s.Columns.Add(column => { column.Caption = "Nachträge"; column.FieldName = "AppendixDescription"; column.Width = new Unit(10, UnitType.Percentage); }); s.Columns.Add(column => { column.Caption = "Mitarbeiter"; column.FieldName = "UserDescription"; column.MinWidth = 150; column.Width = new Unit(15, UnitType.Percentage); column.SetDataItemTemplateContent(c => { var userDescriptions = DataBinder.Eval(c.DataItem, "UserDescriptions") as List; if (userDescriptions != null) { foreach (var description in userDescriptions) { var split = description.Split('|'); if (split.Length > 1) html.ViewContext.Writer.Write( "" + split[0] + "" + "" + split[1] + "
"); else html.ViewContext.Writer.Write( "" + split[0] + "
"); } } }); }); s.Columns.Add(column => { column.Caption = "Kommentar"; column.FieldName = "Comment"; column.CellStyle.Wrap = DefaultBoolean.True; column.SetDataItemTemplateContent(c => { var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id")); var comment = DataBinder.Eval(c.DataItem, "Comment"); var text = comment == null ? String.Empty : comment.ToString(); var isLongText = text.ToString().Length > 40; if (isLongText) { html.ViewContext.Writer.Write(text.Substring(0, 40) + " ..."); html.ViewContext.Writer.Write( "
Anzeigen
"); } else html.ViewContext.Writer.Write(text); if (_userContext.CurrentUser.HasFunction("Site-Sites-Edit-Comment")) html.ViewContext.Writer.Write( (isLongText ? " " : "
") + "Bearbeiten"); }); column.MinWidth = 120; column.Width = new Unit(15, UnitType.Percentage); column.Visible = false; }); s.TotalSummary.Add(new ASPxSummaryItem { SummaryType = DevExpress.Data.SummaryItemType.Count, FieldName = "Description", DisplayFormat = "Anzahl
{0:n0}" }); s.GroupSummary.Add(new ASPxSummaryItem { SummaryType = DevExpress.Data.SummaryItemType.Count, FieldName = "Description", DisplayFormat = "Anzahl = {0:n0}" }); s.TotalSummary.Add(new ASPxSummaryItem { FieldName = "DeviationValue", SummaryType = DevExpress.Data.SummaryItemType.Sum, DisplayFormat = "VA ∑
{0:c2}" }); s.GroupSummary.Add(new ASPxSummaryItem { FieldName = "DeviationValue", SummaryType = DevExpress.Data.SummaryItemType.Sum, DisplayFormat = "VA ∑ = {0:c2}" }); s.ClientLayout = (sender, e) => { if (e.LayoutMode == ClientLayoutMode.Loading) { if (System.Web.HttpContext.Current.Session["SiteGridState"] != null) e.LayoutData = (string)System.Web.HttpContext.Current.Session["SiteGridState"]; } else System.Web.HttpContext.Current.Session["SiteGridState"] = e.LayoutData; }; s.PreRender = s.BeforeGetCallbackResult = (sender, e) => { MVCxGridView gridView = sender as MVCxGridView; System.Web.HttpContext.Current.Session["SiteGridViewState"] = new MVCxGridViewState(gridView); }; s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }"; s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }"; s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247); s.Styles.Footer.CssClass += "devExGridFooterPanel"; s.Styles.GroupRow.CssClass += "devExGridGroupRow"; return s; } /// /// Creates GridViewSettings for the deviation gridView /// /// Current HtmlHelper context. public static GridViewSettings DeviationGridViewSettings(this System.Web.Mvc.HtmlHelper html) { var s = new GridViewSettings(); s.Name = "devGridViewDeviation"; s.KeyFieldName = "Id"; s.CallbackRouteValues = new { Controller = "Deviation", Action = "PartialDeviations" }; s.Width = Unit.Percentage(99); s.Settings.ShowHeaderFilterButton = true; s.Settings.ShowFilterRow = true; s.Settings.ShowFilterRowMenu = true; s.Settings.ShowFooter = true; s.Settings.ShowGroupPanel = true; s.Settings.AutoFilterCondition = AutoFilterCondition.Contains; s.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto; s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto; s.Settings.VerticalScrollableHeight = (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1) ? 400 : (int)html.ViewData["ScrollHeight"]; s.SettingsExport.Landscape = true; s.SettingsExport.FileName = "Vertragsabweichungsliste"; s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel); s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel); s.SettingsBehavior.EnableCustomizationWindow = true; s.SettingsBehavior.AllowHeaderFilter = true; s.SettingsPager.AlwaysShowPager = true; s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.Control; s.SettingsCookies.Enabled = true; s.SettingsCookies.CookiesID = "deviationGridStateCookie"; s.Toolbars.Add(t => { var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh); refreshItem.Text = "Aktualisieren"; var expandItem = t.Items.Add(GridViewToolbarCommand.FullExpand); expandItem.Text = "Alle aufklappen"; var collapseItem = t.Items.Add(GridViewToolbarCommand.FullCollapse); collapseItem.Text = "Alle einklappen"; var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter); filterItem.Text = "Filter entfernen"; t.Items.Add(i => { i.Text = "Spalten anzeigen / ausblenden"; i.Name = "ToggleColumnChooser"; i.Image.IconID = IconID.OtherViewgridlines16x16gray; i.BeginGroup = true; }); t.Items.Add(i => { i.Text = "Drucken"; i.Name = "Print"; i.Image.IconID = IconID.PrintDefaultprinter16x16; i.BeginGroup = true; }); }); s.Columns.Add(column => { column.Caption = "#"; column.FieldName = "CustomNumber"; column.MinWidth = 50; column.Width = new Unit(60, UnitType.Pixel); column.Settings.AutoFilterCondition = AutoFilterCondition.Equals; column.Settings.ShowFilterRowMenu = DefaultBoolean.False; column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; column.Settings.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom; }); s.Columns.Add(column => { column.Caption = "Bezeichnung"; column.FieldName = "Description"; column.MinWidth = 220; column.Width = new Unit(250, UnitType.Pixel); column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; }); s.Columns.Add(column => { column.Caption = "Baustelle"; column.FieldName = "SiteDescription"; column.MinWidth = 150; column.Width = new Unit(10, UnitType.Percentage); column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; }); s.Columns.Add(column => { column.Caption = "Kst.-Stelle"; column.FieldName = "SiteCustomNumber"; column.MinWidth = 120; column.Width = new Unit(130, UnitType.Pixel); column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; }); s.Columns.Add(column => { column.Caption = "Nachtrag"; column.FieldName = "AppendixDescription"; column.MinWidth = 100; column.Width = new Unit(100, UnitType.Pixel); column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; }); s.Columns.Add(column => { column.Caption = "Einreichung"; column.FieldName = "ReceiptDate"; column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy"; column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.DateRangePicker; column.MinWidth = 110; column.Width = new Unit(110, UnitType.Pixel); }); s.Columns.Add(column => { column.Caption = "Tage VA-NT"; column.FieldName = "DaysReceiptToAppendixOffering"; column.MinWidth = 100; column.Width = new Unit(110, UnitType.Pixel); column.HeaderStyle.Wrap = DefaultBoolean.True; }); s.Columns.Add(column => { column.Caption = "Schätzung"; column.FieldName = "Value"; column.PropertiesEdit.DisplayFormatString = "c2"; column.MinWidth = 100; column.Width = new Unit(120, UnitType.Pixel); }); s.Columns.Add(column => { column.Caption = "Bewert."; column.FieldName = "Percentage"; column.PropertiesEdit.DisplayFormatString = "p0"; column.MinWidth = 70; column.Width = new Unit(80, UnitType.Pixel); }); s.Columns.Add(column => { column.Caption = "Schätzung bew."; column.FieldName = "PercentageValue"; column.PropertiesEdit.DisplayFormatString = "c2"; column.MinWidth = 100; column.Width = new Unit(120, UnitType.Pixel); column.HeaderStyle.Wrap = DefaultBoolean.True; }); s.Columns.Add(column => { column.Caption = "Status"; column.FieldName = "StatusDescription"; column.MinWidth = 110; column.Width = new Unit(120, UnitType.Pixel); column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; }); s.Columns.Add(column => { column.Caption = "VA-Kategorien"; column.FieldName = "DisturbanceValuesDescription"; column.MinWidth = 190; column.Width = new Unit(220, UnitType.Pixel); column.SetFilterTemplateContent(f => { html.DevExpress().TextBox(t => { t.Name = "devTextBoxFilterDisturbanceValuesDescription"; t.Width = new Unit(100, UnitType.Percentage); t.Properties.ClientSideEvents.Init = "function (s, e) { " + " if (customFilters != null && customFilters['DisturbanceValuesDescription'] != null) {" + " s.SetText(customFilters['DisturbanceValuesDescription']); }}"; t.Properties.ClientSideEvents.KeyUp = "function (s, e) { " + " customFilters['DisturbanceValuesDescription'] = s.GetValue(); " + " setFilterTimer(customFilterDelay, function () { devGridViewDeviation.PerformCallback(); }); }"; }).Render(); }); column.UnboundType = DevExpress.Data.UnboundColumnType.Decimal; column.UnboundExpression = "[DisturbanceValueSum]"; }); s.Columns.Add(column => { column.Caption = "Art"; column.FieldName = "KindDescription"; column.MinWidth = 140; column.Width = new Unit(140, UnitType.Pixel); column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; }); s.Columns.Add(column => { column.Caption = "Kommentar"; column.FieldName = "Comment"; column.CellStyle.Wrap = DefaultBoolean.True; column.SetDataItemTemplateContent(c => { var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id")); var comment = DataBinder.Eval(c.DataItem, "Comment"); var text = comment == null ? String.Empty : comment.ToString(); var isLongText = text.ToString().Length > 40; if (isLongText) { html.ViewContext.Writer.Write(text.Substring(0, 40) + " ..."); html.ViewContext.Writer.Write( "
Anzeigen
"); } else html.ViewContext.Writer.Write(text); if (_userContext.CurrentUser.HasFunction("Deviation-Deviations-Edit-Comment")) html.ViewContext.Writer.Write( (isLongText ? " " : "
") + " Bearbeiten"); }); column.MinWidth = 120; column.Width = new Unit(8, UnitType.Percentage); column.Visible = false; }); //s.SetDataRowTemplateContent(t => //{ // var list = t.Grid.DataSource as List; // var model = list.First(l => l.Id == (int)t.KeyValue); // html.RenderPartial("~/Views/Deviations/_DeviationDataRowPartial.cshtml", model, html.ViewData); //}); var totalDaysReceiptToAppendixOfferingSum = 0; var totalDaysReceiptToAppendixOfferingCount = 0; var totalDisturbanceSum = default(decimal); s.CustomSummaryCalculate = (sender, e) => { if (e.SummaryProcess == CustomSummaryProcess.Start) { totalDaysReceiptToAppendixOfferingSum = 0; totalDaysReceiptToAppendixOfferingCount = 0; totalDisturbanceSum = 0; } if (e.SummaryProcess == CustomSummaryProcess.Calculate) { var daysReceiptToAppendixOfferingVal = e.GetValue("DaysReceiptToAppendixOffering"); if (daysReceiptToAppendixOfferingVal != null) { totalDaysReceiptToAppendixOfferingCount++; totalDaysReceiptToAppendixOfferingSum += Convert.ToInt32(daysReceiptToAppendixOfferingVal); } var disturbanceVal = e.GetValue("DisturbanceValueSum"); if (disturbanceVal != null) totalDisturbanceSum += Convert.ToDecimal(disturbanceVal); } if (e.SummaryProcess == CustomSummaryProcess.Finalize) { var summaryItem = (ASPxSummaryItem)e.Item; if (summaryItem.FieldName == "DaysReceiptToAppendixOffering") { if (totalDaysReceiptToAppendixOfferingSum == 0 || totalDaysReceiptToAppendixOfferingCount == 0) e.TotalValue = 0; else e.TotalValue = totalDaysReceiptToAppendixOfferingSum / totalDaysReceiptToAppendixOfferingCount; } else if (summaryItem.FieldName == "DisturbanceValuesDescription") e.TotalValue = totalDisturbanceSum; } }; s.TotalSummary.Add(new ASPxSummaryItem { SummaryType = DevExpress.Data.SummaryItemType.Count, FieldName = "SiteDescription", DisplayFormat = "Anzahl
{0:n0}" }); s.GroupSummary.Add(new ASPxSummaryItem { SummaryType = DevExpress.Data.SummaryItemType.Count, FieldName = "SiteDescription", DisplayFormat = "Anzahl = {0:n0}" }); s.TotalSummary.Add(new ASPxSummaryItem { FieldName = "Value", SummaryType = DevExpress.Data.SummaryItemType.Sum, DisplayFormat = "Schätzung ∑
{0:c2}" }); s.GroupSummary.Add(new ASPxSummaryItem { FieldName = "Value", SummaryType = DevExpress.Data.SummaryItemType.Sum, DisplayFormat = "Schätzung ∑ = {0:c2}" }); s.TotalSummary.Add(new ASPxSummaryItem { FieldName = "Percentage", SummaryType = DevExpress.Data.SummaryItemType.Average, DisplayFormat = "Bew. Ø
{0:p0}" }); s.GroupSummary.Add(new ASPxSummaryItem { FieldName = "Percentage", SummaryType = DevExpress.Data.SummaryItemType.Average, DisplayFormat = "Bew. Ø = {0:p0}" }); s.TotalSummary.Add(new ASPxSummaryItem { FieldName = "PercentageValue", SummaryType = DevExpress.Data.SummaryItemType.Sum, DisplayFormat = "Schätz. bew. ∑
{0:c2}" }); s.GroupSummary.Add(new ASPxSummaryItem { FieldName = "PercentageValue", SummaryType = DevExpress.Data.SummaryItemType.Sum, DisplayFormat = "Schätz. bew. ∑ = {0:c2}" }); s.TotalSummary.Add(new ASPxSummaryItem { FieldName = "DaysReceiptToAppendixOffering", SummaryType = DevExpress.Data.SummaryItemType.Custom, DisplayFormat = "T. VA-NT Ø
{0:n0}" }); s.GroupSummary.Add(new ASPxSummaryItem { FieldName = "DaysReceiptToAppendixOffering", SummaryType = DevExpress.Data.SummaryItemType.Custom, DisplayFormat = "Tage VA-NT Ø = {0:n0}" }); s.TotalSummary.Add(new ASPxSummaryItem { FieldName = "DisturbanceValuesDescription", SummaryType = DevExpress.Data.SummaryItemType.Custom, DisplayFormat = "Kat. ∑
{0:c2}" }); s.GroupSummary.Add(new ASPxSummaryItem { FieldName = "DisturbanceValuesDescription", SummaryType = DevExpress.Data.SummaryItemType.Custom, DisplayFormat = "Kat. ∑ = {0:c2}" }); s.HtmlRowPrepared = (sender, e) => { var displayColor = e.GetValue("DisplayColor"); if (displayColor != null && e.RowType == GridViewRowType.Data) e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml(displayColor.ToString()); }; s.ClientLayout = (sender, e) => { if (e.LayoutMode == ClientLayoutMode.Loading) { if (System.Web.HttpContext.Current.Session["DeviationGridState"] != null) e.LayoutData = (string)System.Web.HttpContext.Current.Session["DeviationGridState"]; } else System.Web.HttpContext.Current.Session["DeviationGridState"] = e.LayoutData; }; s.PreRender = s.BeforeGetCallbackResult = (sender, e) => { MVCxGridView gridView = sender as MVCxGridView; System.Web.HttpContext.Current.Session["DeviationGridViewState"] = new MVCxGridViewState(gridView); }; s.CustomColumnSort = (sender, e) => { if (e.Column.FieldName != "CustomNumber") return; int.TryParse(e.GetRow1Value("CustomNumber").ToString(), out int rowVal1); int.TryParse(e.GetRow2Value("CustomNumber").ToString(), out int rowVal2); e.Result = (rowVal1).CompareTo(rowVal2); e.Handled = true; }; s.ClientSideEvents.BeginCallback = "function (s, e) { " + "e.customArgs['scrollHeight'] = [ gridScrollHeight ]; " + "e.customArgs['customFilters'] = [ JSON.stringify(customFilters) ]; }"; s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }"; s.Styles.Footer.CssClass += "devExGridFooterPanel"; s.Styles.GroupRow.CssClass += "devExGridGroupRow"; s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247); return s; } /// /// Creates GridViewSettings for the appendix gridView /// /// Current HtmlHelper context. public static GridViewSettings AppendixGridViewSettings(this System.Web.Mvc.HtmlHelper html) { var s = new GridViewSettings(); s.Name = "devGridViewAppendix"; s.KeyFieldName = "Id"; s.CallbackRouteValues = new { Controller = "Appendix", Action = "PartialAppendices" }; s.Width = Unit.Percentage(99); s.Settings.ShowHeaderFilterButton = true; s.Settings.ShowFilterRow = true; s.Settings.ShowFilterRowMenu = true; s.Settings.ShowFooter = true; s.Settings.ShowGroupPanel = true; s.Settings.AutoFilterCondition = AutoFilterCondition.Contains; s.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto; s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto; s.Settings.VerticalScrollableHeight = (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1) ? 400 : (int)html.ViewData["ScrollHeight"]; s.SettingsExport.Landscape = true; s.SettingsExport.FileName = "Nachtragsliste"; s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel); s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel); s.SettingsBehavior.EnableCustomizationWindow = true; s.SettingsBehavior.AllowHeaderFilter = true; s.SettingsPager.AlwaysShowPager = true; s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.Control; s.SettingsCookies.Enabled = true; s.SettingsCookies.CookiesID = "appendixGridStateCookie"; s.Toolbars.Add(t => { var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh); refreshItem.Text = "Aktualisieren"; var expandItem = t.Items.Add(GridViewToolbarCommand.FullExpand); expandItem.Text = "Alle aufklappen"; var collapseItem = t.Items.Add(GridViewToolbarCommand.FullCollapse); collapseItem.Text = "Alle einklappen"; var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter); filterItem.Text = "Filter entfernen"; t.Items.Add(i => { i.Text = "Spalten anzeigen / ausblenden"; i.Name = "ToggleColumnChooser"; i.Image.IconID = IconID.OtherViewgridlines16x16gray; i.BeginGroup = true; }); t.Items.Add(i => { i.Text = "Drucken"; i.Name = "Print"; i.Image.IconID = IconID.PrintDefaultprinter16x16; i.BeginGroup = true; }); }); s.Columns.Add(column => { column.Caption = "#"; column.FieldName = "CustomNumber"; column.MinWidth = 80; column.Width = new Unit(80, UnitType.Pixel); column.Settings.AutoFilterCondition = AutoFilterCondition.Equals; column.Settings.ShowFilterRowMenu = DefaultBoolean.False; column.Settings.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom; column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; }); s.Columns.Add(column => { column.Caption = "Bezeichnung"; column.FieldName = "Description"; column.MinWidth = 200; column.Width = new Unit(14, UnitType.Percentage); column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; column.SetDataItemTemplateContent(c => { var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id")); var description = DataBinder.Eval(c.DataItem, "Description"); html.ViewContext.Writer.Write(description + "
Details anzeigen"); }); }); s.Columns.Add(column => { column.Caption = "Baustelle"; column.FieldName = "SiteDescription"; column.MinWidth = 150; column.Width = new Unit(10, UnitType.Percentage); column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; }); s.Columns.Add(column => { column.Caption = "Kst.-Stelle"; column.FieldName = "SiteCustomNumber"; column.MinWidth = 120; column.Width = new Unit(120, UnitType.Pixel); column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; }); s.Columns.Add(column => { column.Caption = "Einreichung"; column.FieldName = "OfferingDate"; column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy"; column.MinWidth = 110; column.Width = new Unit(110, UnitType.Pixel); }); s.Columns.Add(column => { column.Caption = "Angeb. -Summe"; column.FieldName = "OfferingValue"; column.PropertiesEdit.DisplayFormatString = "c2"; column.MinWidth = 110; column.Width = new Unit(110, UnitType.Pixel); column.HeaderStyle.Wrap = DefaultBoolean.True; }); s.Columns.Add(column => { column.Caption = "Verhand. -Summe"; column.FieldName = "NegotiationValue"; column.PropertiesEdit.DisplayFormatString = "c2"; column.MinWidth = 110; column.Width = new Unit(110, UnitType.Pixel); column.HeaderStyle.Wrap = DefaultBoolean.True; }); s.Columns.Add(column => { column.Caption = "Anteil Verh. zu Angeb."; column.FieldName = "RelationOfferingToNegotiation"; column.PropertiesEdit.DisplayFormatString = "p2"; column.MinWidth = 115; column.Width = new Unit(115, UnitType.Pixel); column.HeaderStyle.Wrap = DefaultBoolean.True; }); s.Columns.Add(column => { column.Caption = "VA"; column.FieldName = "DeviationDescription"; column.MinWidth = 70; column.Width = new Unit(6, UnitType.Percentage); }); s.Columns.Add(column => { column.Caption = "Fak. Ang. zu VA"; column.FieldName = "RelationOfferingToDeviations"; column.PropertiesEdit.DisplayFormatString = "n2"; column.MinWidth = 100; column.Width = new Unit(100, UnitType.Pixel); column.HeaderStyle.Wrap = DefaultBoolean.True; }); s.Columns.Add(column => { column.Caption = "AR gestellt"; column.FieldName = "OrderInvoiceCreatedDescription"; column.MinWidth = 60; column.Width = new Unit(80, UnitType.Pixel); column.HeaderStyle.Wrap = DefaultBoolean.True; column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; column.SetDataItemTemplateContent(c => { var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id")); var description = DataBinder.Eval(c.DataItem, "OrderInvoiceCreatedDescription"); if (_userContext.CurrentUser.HasFunction("Appendix-Appendices-Edit")) html.ViewContext.Writer.Write(description + "
Ändern"); }); }); s.Columns.Add(column => { column.Caption = "Status"; column.FieldName = "StateDescription"; column.MinWidth = 100; column.Width = new Unit(100, UnitType.Pixel); column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; }); s.Columns.Add(column => { column.Caption = "Bestellsch.-Datum"; column.FieldName = "OrderDate"; column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy"; column.MinWidth = 110; column.Width = new Unit(110, UnitType.Pixel); column.HeaderStyle.Wrap = DefaultBoolean.True; }); s.Columns.Add(column => { column.Caption = "Bestellsch.-Nummer"; column.FieldName = "OrderNumber"; column.MinWidth = 90; column.Width = new Unit(110, UnitType.Pixel); column.HeaderStyle.Wrap = DefaultBoolean.True; }); s.Columns.Add(column => { column.Caption = "NT-Kategorien"; column.FieldName = "CategoryValuesDescription"; column.MinWidth = 200; column.Width = new Unit(12, UnitType.Percentage); }); s.Columns.Add(column => { column.Caption = "Kommentar"; column.FieldName = "Comment"; column.CellStyle.Wrap = DefaultBoolean.True; column.SetDataItemTemplateContent(c => { var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id")); var comment = DataBinder.Eval(c.DataItem, "Comment"); var text = comment == null ? String.Empty : comment.ToString(); var isLongText = text.ToString().Length > 40; if (isLongText) { html.ViewContext.Writer.Write(text.Substring(0, 40) + " ..."); html.ViewContext.Writer.Write( "
Anzeigen
"); } else html.ViewContext.Writer.Write(text); if (_userContext.CurrentUser.HasFunction("Deviation-Deviations-Edit-Comment")) html.ViewContext.Writer.Write( (isLongText ? " " : "
") + "Bearbeiten"); }); column.MinWidth = 250; column.Width = new Unit(14, UnitType.Percentage); }); s.TotalSummary.Add(new ASPxSummaryItem { SummaryType = DevExpress.Data.SummaryItemType.Count, FieldName = "Description", DisplayFormat = "Anzahl
{0:n0}" }); s.GroupSummary.Add(new ASPxSummaryItem { SummaryType = DevExpress.Data.SummaryItemType.Count, FieldName = "Description", DisplayFormat = "Anzahl = {0:n0}" }); s.TotalSummary.Add(new ASPxSummaryItem { SummaryType = DevExpress.Data.SummaryItemType.Sum, FieldName = "OfferingValue", DisplayFormat = "Angeb. ∑
{0:c2}" }); s.GroupSummary.Add(new ASPxSummaryItem { SummaryType = DevExpress.Data.SummaryItemType.Sum, FieldName = "OfferingValue", DisplayFormat = "Angeb.-∑ = {0:c2}" }); s.TotalSummary.Add(new ASPxSummaryItem { SummaryType = DevExpress.Data.SummaryItemType.Sum, FieldName = "NegotiationValue", DisplayFormat = "Verhand. ∑
{0:c2}" }); s.GroupSummary.Add(new ASPxSummaryItem { SummaryType = DevExpress.Data.SummaryItemType.Sum, FieldName = "NegotiationValue", DisplayFormat = "Verhand.-∑ = {0:c2}" }); s.HtmlRowPrepared = (sender, e) => { var state = e.GetValue("State") as StateDataModel; if (e.RowType == GridViewRowType.Data && state != null && !state.IsDefault) e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml(state.HexColor); }; s.ClientLayout = (sender, e) => { if (e.LayoutMode == ClientLayoutMode.Loading) { if (System.Web.HttpContext.Current.Session["AppendixGridState"] != null) e.LayoutData = (string)System.Web.HttpContext.Current.Session["AppendixGridState"]; } else System.Web.HttpContext.Current.Session["AppendixGridState"] = e.LayoutData; }; s.PreRender = s.BeforeGetCallbackResult = (sender, e) => { MVCxGridView gridView = sender as MVCxGridView; System.Web.HttpContext.Current.Session["AppendixGridViewState"] = new MVCxGridViewState(gridView); }; s.CustomColumnSort = (sender, e) => { if (e.Column.FieldName != "CustomNumber") return; int.TryParse(e.GetRow1Value("CustomNumber").ToString(), out int rowVal1); int.TryParse(e.GetRow2Value("CustomNumber").ToString(), out int rowVal2); e.Result = (rowVal1).CompareTo(rowVal2); e.Handled = true; }; s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }"; s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }"; s.ClientSideEvents.ColumnResized = "function (s, e) { setGridScrollHeight(); }"; //s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247); s.Styles.Footer.CssClass += "devExGridFooterPanel"; s.Styles.GroupRow.CssClass += "devExGridGroupRow"; return s; } /// /// Creates GridViewSettings for the mailNotifications gridView /// /// Current HtmlHelper context. public static GridViewSettings MailNotificationGridViewSettings(this System.Web.Mvc.HtmlHelper html) { var s = new GridViewSettings(); s.Name = "devGridViewMailNotifications"; s.KeyFieldName = "Id"; s.CallbackRouteValues = new { Controller = "Misc", Action = "PartialMailNotifications" }; s.Width = Unit.Percentage(99); s.Settings.ShowHeaderFilterButton = true; s.Settings.ShowFilterRow = true; s.Settings.ShowFilterRowMenu = true; s.Settings.ShowFooter = true; s.Settings.ShowGroupPanel = true; s.Settings.AutoFilterCondition = AutoFilterCondition.Contains; s.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto; s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto; s.Settings.VerticalScrollableHeight = (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1) ? 400 : (int)html.ViewData["ScrollHeight"]; s.SettingsExport.Landscape = true; s.SettingsExport.FileName = "Benachrichtigungsliste"; s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel); s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel); s.SettingsBehavior.EnableCustomizationWindow = true; s.SettingsBehavior.AllowHeaderFilter = true; s.SettingsPager.AlwaysShowPager = true; s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.Control; s.SettingsCookies.Enabled = true; s.SettingsCookies.CookiesID = "mailNotificationGridStateCookie"; s.Toolbars.Add(t => { var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh); refreshItem.Text = "Aktualisieren"; var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter); filterItem.Text = "Filter entfernen"; t.Items.Add(i => { i.Text = "Spalten anzeigen / ausblenden"; i.Name = "ToggleColumnChooser"; i.Image.IconID = IconID.OtherViewgridlines16x16gray; i.BeginGroup = true; }); }); if (_userContext.CurrentUser.HasFunction("Misc-MailNotifications-Edit")) { s.Columns.Add(column => { column.Caption = "#"; column.SetDataItemTemplateContent(c => { html.ViewContext.Writer.Write( "Bearbeiten "); html.ViewContext.Writer.Write( "Löschen
"); html.ViewContext.Writer.Write( "Sofort ausführen"); }); column.SetHeaderTemplateContent(c => { html.ViewContext.Writer.Write( "Neu "); }); column.Settings.AllowDragDrop = DefaultBoolean.False; column.Settings.AllowSort = DefaultBoolean.False; column.Width = new Unit(150, UnitType.Pixel); }); } s.Columns.Add(column => { column.Caption = "Zeitplan"; column.FieldName = "CronExpressionDescription"; column.MinWidth = 100; column.Width = new Unit(20, UnitType.Percentage); }); s.Columns.Add(column => { column.Caption = "Benachrichtigungs-Plugin"; column.FieldName = "NotificationPluginSystemNameDescription"; column.Width = new Unit(17.5, UnitType.Percentage); }); s.Columns.Add(column => { column.Caption = "Benachrichtigungs-Job"; column.FieldName = "NotificationJobSystemNameDescription"; column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy"; column.MinWidth = 110; column.Width = new Unit(17.5, UnitType.Percentage); }); s.Columns.Add(column => { column.Caption = "Mitarbeiter"; column.FieldName = "UserDescriptions"; column.MinWidth = 200; column.Width = new Unit(20, UnitType.Percentage); column.SetDataItemTemplateContent(c => { var userDescriptions = DataBinder.Eval(c.DataItem, "UserDescriptions") as List; if (userDescriptions != null) { foreach (var description in userDescriptions) { var split = description.Split('|'); if (split.Length > 1) html.ViewContext.Writer.Write( "" + split[0] + "" + "" + split[1] + "
"); else html.ViewContext.Writer.Write( "" + split[0] + "
"); } } }); }); s.Columns.Add(column => { column.Caption = "Nächste Ausführung"; column.FieldName = "NextExecutionTime"; column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy"; column.MinWidth = 110; column.Width = new Unit(15, UnitType.Percentage); }); s.ClientLayout = (sender, e) => { if (e.LayoutMode == ClientLayoutMode.Loading) { if (System.Web.HttpContext.Current.Session["MailNotificationsGridState"] != null) e.LayoutData = (string)System.Web.HttpContext.Current.Session["MailNotificationsGridState"]; } else System.Web.HttpContext.Current.Session["MailNotificationsGridState"] = e.LayoutData; }; s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }"; s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }"; s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247); return s; } /// /// Creates GridViewSettings for the logs gridView /// /// Current HtmlHelper context. public static GridViewSettings LogGridViewSettings(this System.Web.Mvc.HtmlHelper html) { var s = new GridViewSettings(); s.Name = "devGridViewLog"; s.KeyFieldName = "Id"; s.CallbackRouteValues = new { Controller = "Misc", Action = "PartialLogs" }; s.Width = Unit.Percentage(99); s.Settings.ShowHeaderFilterButton = true; s.Settings.ShowFilterRow = true; s.Settings.ShowFilterRowMenu = true; s.Settings.ShowFooter = true; s.Settings.ShowGroupPanel = true; s.Settings.AutoFilterCondition = AutoFilterCondition.Contains; s.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto; s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto; s.Settings.VerticalScrollableHeight = (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1) ? 400 : (int)html.ViewData["ScrollHeight"]; s.SettingsExport.Landscape = true; s.SettingsExport.FileName = "Logliste"; s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel); s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel); s.SettingsBehavior.EnableCustomizationWindow = true; s.SettingsBehavior.AllowHeaderFilter = true; s.SettingsPager.AlwaysShowPager = true; s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.Control; s.SettingsCookies.Enabled = true; s.SettingsCookies.CookiesID = "logGridStateCookie"; s.Toolbars.Add(t => { var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh); refreshItem.Text = "Aktualisieren"; var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter); filterItem.Text = "Filter entfernen"; t.Items.Add(i => { i.Text = "Spalten anzeigen / ausblenden"; i.Name = "ToggleColumnChooser"; i.Image.IconID = IconID.OtherViewgridlines16x16gray; i.BeginGroup = true; }); t.Items.Add(i => { i.Text = "Drucken"; i.Name = "Print"; i.Image.IconID = IconID.PrintDefaultprinter16x16; i.BeginGroup = true; }); }); s.Columns.Add(column => { column.Caption = "#"; column.SetDataItemTemplateContent(c => { html.ViewContext.Writer.Write( "Betrachten "); if (_userContext.CurrentUser.HasFunction("Misc-Logs-Delete")) { html.ViewContext.Writer.Write( "Löschen
"); } }); column.Settings.AllowDragDrop = DefaultBoolean.False; column.Settings.AllowSort = DefaultBoolean.False; column.Width = new Unit(150, UnitType.Pixel); }); s.Columns.Add(column => { column.Caption = "Level"; column.FieldName = "LogLevelDescription"; column.MinWidth = 100; column.Width = new Unit(8, UnitType.Percentage); column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; }); s.Columns.Add(column => { column.Caption = "Betreff"; column.FieldName = "ShortMessage"; column.MinWidth = 150; column.Width = new Unit(12, UnitType.Percentage); column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; }); s.Columns.Add(column => { column.Caption = "Nachricht"; column.FieldName = "FullMessage"; column.MinWidth = 200; column.Width = new Unit(20, UnitType.Percentage); column.SetDataItemTemplateContent(c => { var fullMessage = DataBinder.Eval(c.DataItem, "FullMessage"); var text = fullMessage == null ? String.Empty : fullMessage.ToString(); if (text.ToString().Length > 80) html.ViewContext.Writer.Write(text.Substring(0, 80) + " ..."); else html.ViewContext.Writer.Write(text); }); }); s.Columns.Add(column => { column.Caption = "IP-Adresse"; column.FieldName = "IpAddress"; column.MinWidth = 130; column.Width = new Unit(10, UnitType.Percentage); column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; }); s.Columns.Add(column => { column.Caption = "Mitarbeiter"; column.FieldName = "UserDescription"; column.MinWidth = 130; column.Width = new Unit(10, UnitType.Percentage); column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; }); s.Columns.Add(column => { column.Caption = "Datentyp"; column.FieldName = "EntityType"; column.MinWidth = 100; column.Width = new Unit(8, UnitType.Percentage); column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; }); s.Columns.Add(column => { column.Caption = "Daten ID"; column.FieldName = "EntityId"; column.MinWidth = 100; column.Width = new Unit(8, UnitType.Percentage); column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList; }); s.Columns.Add(column => { column.Caption = "Seiten URL"; column.FieldName = "PageUrl"; column.MinWidth = 150; column.Width = new Unit(12, UnitType.Percentage); column.Visible = false; }); s.Columns.Add(column => { column.Caption = "Relative URL"; column.FieldName = "ReferrerUrl"; column.MinWidth = 100; column.Width = new Unit(8, UnitType.Percentage); column.Visible = false; }); s.Columns.Add(column => { column.Caption = "Zeitpunkt"; column.FieldName = "CreatedOnLocal"; column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy - HH:mm:ss"; column.MinWidth = 150; column.Width = new Unit(12, UnitType.Percentage); }); s.ClientLayout = (sender, e) => { if (e.LayoutMode == ClientLayoutMode.Loading) { if (System.Web.HttpContext.Current.Session["LogGridState"] != null) e.LayoutData = (string)System.Web.HttpContext.Current.Session["LogGridState"]; } else System.Web.HttpContext.Current.Session["LogGridState"] = e.LayoutData; }; s.PreRender = s.BeforeGetCallbackResult = (sender, e) => { MVCxGridView gridView = sender as MVCxGridView; System.Web.HttpContext.Current.Session["LogGridViewState"] = new MVCxGridViewState(gridView); }; s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }"; s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }"; s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247); return s; } } }