GridViewSettingsHelper.cs 68 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536
  1. using DevExpress.Data;
  2. using DevExpress.Utils;
  3. using DevExpress.Web;
  4. using DevExpress.Web.ASPxThemes;
  5. using DevExpress.Web.Mvc;
  6. using DevExpress.Web.Mvc.UI;
  7. using GreenTree.Nachtragsmanagement.Core.Authentication;
  8. using GreenTree.Nachtragsmanagement.Web.Models.Appendix;
  9. using System;
  10. using System.Linq;
  11. using System.Collections.Generic;
  12. using System.Web.UI;
  13. using System.Web.UI.WebControls;
  14. using System.Web.Mvc.Html;
  15. using GreenTree.Nachtragsmanagement.Web.Models.Deviation;
  16. namespace GreenTree.Nachtragsmanagement.Web.Extensions
  17. {
  18. public static class GridViewSettingsHelper
  19. {
  20. /// <summary>
  21. /// Current user context
  22. /// </summary>
  23. public static UserContext _userContext = Core.CommonHelper.UserContext();
  24. /// <summary>
  25. /// Creates GridViewSettings for the site gridView
  26. /// </summary>
  27. /// <param name="html">Current HtmlHelper context.</param>
  28. public static GridViewSettings SiteGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  29. {
  30. var s = new GridViewSettings();
  31. s.Name = "devGridViewSite";
  32. s.KeyFieldName = "Id";
  33. s.CallbackRouteValues = new { Controller = "Site", Action = "PartialSites" };
  34. s.Width = Unit.Percentage(99);
  35. s.Settings.ShowHeaderFilterButton = true;
  36. s.Settings.ShowFilterRow = true;
  37. s.Settings.ShowFilterRowMenu = false;
  38. s.Settings.ShowFooter = true;
  39. s.Settings.ShowGroupPanel = true;
  40. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  41. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  42. s.Settings.VerticalScrollableHeight =
  43. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  44. ? 400
  45. : (int)html.ViewData["ScrollHeight"];
  46. s.SettingsExport.Landscape = true;
  47. s.SettingsExport.FileName = "Baustellenliste";
  48. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  49. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  50. s.SettingsBehavior.EnableCustomizationWindow = true;
  51. s.SettingsBehavior.AllowHeaderFilter = true;
  52. s.SettingsPager.AlwaysShowPager = true;
  53. s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.Control;
  54. s.SettingsCookies.Enabled = true;
  55. s.SettingsCookies.CookiesID = "siteGridStateCookie";
  56. s.SettingsPager.Position = PagerPosition.Bottom;
  57. s.SettingsPager.PageSizeItemSettings.Visible = true;
  58. s.SettingsPager.FirstPageButton.Visible = true;
  59. s.SettingsPager.LastPageButton.Visible = true;
  60. s.SettingsPager.NumericButtonCount = 5;
  61. s.Toolbars.Add(t =>
  62. {
  63. t.Items.Add(i =>
  64. {
  65. i.Text = "Baustelle hinzufügen";
  66. i.Name = "AddSite";
  67. i.Image.IconID = IconID.ActionsAdd16x16;
  68. });
  69. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  70. refreshItem.Text = "Aktualisieren";
  71. var expandItem = t.Items.Add(GridViewToolbarCommand.FullExpand);
  72. expandItem.Text = "Alle aufklappen";
  73. var collapseItem = t.Items.Add(GridViewToolbarCommand.FullCollapse);
  74. collapseItem.Text = "Alle einklappen";
  75. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  76. filterItem.Text = "Filter entfernen";
  77. t.Items.Add(i =>
  78. {
  79. i.Text = "Spalten anzeigen / ausblenden";
  80. i.Name = "ToggleColumnChooser";
  81. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  82. i.BeginGroup = true;
  83. });
  84. t.Items.Add(i =>
  85. {
  86. i.Text = "Drucken";
  87. i.Name = "Print";
  88. i.Image.IconID = IconID.PrintDefaultprinter16x16;
  89. i.BeginGroup = true;
  90. });
  91. t.Items.Add(i =>
  92. {
  93. i.Text = "Zurücksetzen";
  94. i.Name = "ResetSettings";
  95. i.Image.IconID = IconID.ActionsReset16x16;
  96. i.BeginGroup = true;
  97. });
  98. });
  99. if (_userContext.CurrentUser.HasFunction("Site-Sites-Edit") || _userContext.CurrentUser.HasFunction("Site-Sites-Delete"))
  100. {
  101. s.Columns.Add(column =>
  102. {
  103. column.Caption = "#";
  104. column.SetDataItemTemplateContent(c =>
  105. {
  106. if (_userContext.CurrentUser.HasFunction("Site-Sites-Edit"))
  107. html.ViewContext.Writer.Write(
  108. "<a href=\"#\" onclick=\"editSite(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Bearbeiten</a>");
  109. if (_userContext.CurrentUser.HasFunction("Site-Sites-Delete"))
  110. html.ViewContext.Writer.Write(
  111. "<br /><a href=\"#\" onclick=\"confirmDelete(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Löschen</a>");
  112. });
  113. column.Caption = "#";
  114. column.Settings.AllowDragDrop = DefaultBoolean.False;
  115. column.Settings.AllowSort = DefaultBoolean.False;
  116. column.Width = new Unit(100, UnitType.Pixel);
  117. });
  118. }
  119. s.Columns.Add(column =>
  120. {
  121. column.Caption = "Kostenstelle";
  122. column.FieldName = "CustomNumber";
  123. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  124. column.MinWidth = 100;
  125. column.Width = new Unit(8, UnitType.Percentage);
  126. column.SortIndex = 0;
  127. column.SortOrder = ColumnSortOrder.Ascending;
  128. column.Settings.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
  129. });
  130. s.Columns.Add(column =>
  131. {
  132. column.Caption = "Bauvorhaben";
  133. column.FieldName = "Description";
  134. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  135. column.Width = new Unit(20, UnitType.Percentage);
  136. });
  137. s.Columns.Add(column =>
  138. {
  139. column.Caption = "Start";
  140. column.FieldName = "Start";
  141. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  142. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.DateRangePicker;
  143. column.MinWidth = 110;
  144. column.Width = new Unit(8, UnitType.Percentage);
  145. });
  146. s.Columns.Add(column =>
  147. {
  148. column.Caption = "Ende";
  149. column.FieldName = "End";
  150. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  151. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.DateRangePicker;
  152. column.MinWidth = 110;
  153. column.Width = new Unit(8, UnitType.Percentage);
  154. });
  155. s.Columns.Add(column =>
  156. {
  157. column.Caption = "Offene VA";
  158. column.FieldName = "DeviationDescription";
  159. column.Visible = false;
  160. column.MinWidth = 150;
  161. column.Width = new Unit(12, UnitType.Percentage);
  162. column.SetDataItemTemplateContent(c =>
  163. {
  164. var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id"));
  165. var deviationDescription = DataBinder.Eval(c.DataItem, "DeviationDescription");
  166. var text = deviationDescription == null
  167. ? String.Empty
  168. : deviationDescription.ToString();
  169. var isLongText = text.ToString().Length > 80;
  170. if (isLongText)
  171. {
  172. html.ViewContext.Writer.Write(text.Substring(0, 80) + " ...");
  173. html.ViewContext.Writer.Write(
  174. "<a href=\"#\" onclick='showDeviationDescription(" + id + ",this)'><br />Anzeigen</a>");
  175. }
  176. else
  177. html.ViewContext.Writer.Write(text);
  178. });
  179. });
  180. s.Columns.Add(column =>
  181. {
  182. column.Caption = "VA-Summe";
  183. column.FieldName = "DeviationValue";
  184. column.PropertiesEdit.DisplayFormatString = "c2";
  185. column.Visible = false;
  186. column.MinWidth = 120;
  187. column.Width = new Unit(10, UnitType.Percentage);
  188. });
  189. s.Columns.Add(column =>
  190. {
  191. column.Caption = "Nachträge";
  192. column.FieldName = "AppendixDescription";
  193. column.Width = new Unit(10, UnitType.Percentage);
  194. });
  195. s.Columns.Add(column =>
  196. {
  197. column.Caption = "Mitarbeiter";
  198. column.FieldName = "UserDescription";
  199. column.MinWidth = 150;
  200. column.Width = new Unit(15, UnitType.Percentage);
  201. column.SetDataItemTemplateContent(c =>
  202. {
  203. var userDescriptions = DataBinder.Eval(c.DataItem, "UserDescriptions") as List<string>;
  204. if (userDescriptions != null)
  205. {
  206. foreach (var description in userDescriptions)
  207. {
  208. var split = description.Split('|');
  209. if (split.Length > 1)
  210. html.ViewContext.Writer.Write(
  211. "<span style=\"float: left\">" + split[0] + "</span>" +
  212. "<span style=\"float: right\">" + split[1] + "</span><br />");
  213. else
  214. html.ViewContext.Writer.Write(
  215. "<span>" + split[0] + "</span><br />");
  216. }
  217. }
  218. });
  219. });
  220. s.Columns.Add(column =>
  221. {
  222. column.Caption = "Kommentar";
  223. column.FieldName = "Comment";
  224. column.CellStyle.Wrap = DefaultBoolean.True;
  225. column.SetDataItemTemplateContent(c =>
  226. {
  227. var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id"));
  228. var comment = DataBinder.Eval(c.DataItem, "Comment");
  229. var text = comment == null
  230. ? String.Empty
  231. : comment.ToString();
  232. var isLongText = text.ToString().Length > 40;
  233. if (isLongText)
  234. {
  235. html.ViewContext.Writer.Write(text.Substring(0, 40) + " ...");
  236. html.ViewContext.Writer.Write(
  237. "<a href=\"#\" onclick='showComment(\"site\"," + id + ",this)'><br />Anzeigen</a>");
  238. }
  239. else
  240. html.ViewContext.Writer.Write(text);
  241. if (_userContext.CurrentUser.HasFunction("Site-Sites-Edit-Comment"))
  242. html.ViewContext.Writer.Write(
  243. (isLongText ? "&nbsp;" : "<br/>") +
  244. "<a href=\"#\" onclick='editComment(\"site\"," + id + ",function() { devGridViewSite.PerformCallback(); })'>Bearbeiten</a>");
  245. });
  246. column.MinWidth = 120;
  247. column.Width = new Unit(15, UnitType.Percentage);
  248. column.Visible = false;
  249. });
  250. s.TotalSummary.Add(new ASPxSummaryItem
  251. {
  252. SummaryType = DevExpress.Data.SummaryItemType.Count,
  253. FieldName = "Description",
  254. DisplayFormat = "Anzahl<br/><i>{0:n0}</i>"
  255. });
  256. s.GroupSummary.Add(new ASPxSummaryItem
  257. {
  258. SummaryType = DevExpress.Data.SummaryItemType.Count,
  259. FieldName = "Description",
  260. DisplayFormat = "Anzahl = {0:n0}"
  261. });
  262. s.TotalSummary.Add(new ASPxSummaryItem
  263. {
  264. FieldName = "DeviationValue",
  265. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  266. DisplayFormat = "VA ∑<br/><i>{0:c2}</i>"
  267. });
  268. s.GroupSummary.Add(new ASPxSummaryItem
  269. {
  270. FieldName = "DeviationValue",
  271. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  272. DisplayFormat = "VA ∑ = <i>{0:c2}</i>"
  273. });
  274. s.ClientLayout = (sender, e) =>
  275. {
  276. if (e.LayoutMode == ClientLayoutMode.Loading)
  277. {
  278. if (System.Web.HttpContext.Current.Session["SiteGridState"] != null)
  279. e.LayoutData = (string)System.Web.HttpContext.Current.Session["SiteGridState"];
  280. }
  281. else
  282. System.Web.HttpContext.Current.Session["SiteGridState"] = e.LayoutData;
  283. };
  284. s.PreRender = s.BeforeGetCallbackResult = (sender, e) => {
  285. MVCxGridView gridView = sender as MVCxGridView;
  286. System.Web.HttpContext.Current.Session["SiteGridViewState"] = new MVCxGridViewState(gridView);
  287. };
  288. s.CustomColumnSort = (sender, e) =>
  289. {
  290. if (e.Column.FieldName != "CustomNumber") return;
  291. int.TryParse(e.GetRow1Value("CustomNumber").ToString(), out int rowVal1);
  292. int.TryParse(e.GetRow2Value("CustomNumber").ToString(), out int rowVal2);
  293. e.Result = (rowVal1).CompareTo(rowVal2);
  294. e.Handled = true;
  295. };
  296. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  297. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  298. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  299. s.Styles.Footer.CssClass += "devExGridFooterPanel";
  300. s.Styles.GroupRow.CssClass += "devExGridGroupRow";
  301. return s;
  302. }
  303. /// <summary>
  304. /// Creates GridViewSettings for the deviation gridView
  305. /// </summary>
  306. /// <param name="html">Current HtmlHelper context.</param>
  307. public static GridViewSettings DeviationGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  308. {
  309. var s = new GridViewSettings();
  310. s.Name = "devGridViewDeviation";
  311. s.KeyFieldName = "Id";
  312. s.CallbackRouteValues = new { Controller = "Deviation", Action = "PartialDeviations" };
  313. s.Width = Unit.Percentage(99);
  314. s.Settings.ShowHeaderFilterButton = true;
  315. s.Settings.ShowFilterRow = true;
  316. s.Settings.ShowFilterRowMenu = true;
  317. s.Settings.ShowFooter = true;
  318. s.Settings.ShowGroupPanel = true;
  319. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  320. s.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto;
  321. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  322. s.Settings.VerticalScrollableHeight =
  323. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  324. ? 400
  325. : (int)html.ViewData["ScrollHeight"];
  326. s.SettingsExport.Landscape = true;
  327. s.SettingsExport.FileName = "Vertragsabweichungsliste";
  328. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  329. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  330. s.SettingsBehavior.EnableCustomizationWindow = true;
  331. s.SettingsBehavior.AllowHeaderFilter = true;
  332. s.SettingsPager.AlwaysShowPager = true;
  333. s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.Control;
  334. s.SettingsCookies.Enabled = true;
  335. s.SettingsCookies.CookiesID = "deviationGridStateCookie";
  336. s.SettingsPager.Position = PagerPosition.Bottom;
  337. s.SettingsPager.PageSizeItemSettings.Visible = true;
  338. s.SettingsPager.FirstPageButton.Visible = true;
  339. s.SettingsPager.LastPageButton.Visible = true;
  340. s.SettingsPager.NumericButtonCount = 5;
  341. s.Toolbars.Add(t =>
  342. {
  343. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  344. refreshItem.Text = "Aktualisieren";
  345. var expandItem = t.Items.Add(GridViewToolbarCommand.FullExpand);
  346. expandItem.Text = "Alle aufklappen";
  347. var collapseItem = t.Items.Add(GridViewToolbarCommand.FullCollapse);
  348. collapseItem.Text = "Alle einklappen";
  349. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  350. filterItem.Text = "Filter entfernen";
  351. t.Items.Add(i =>
  352. {
  353. i.Text = "Spalten anzeigen / ausblenden";
  354. i.Name = "ToggleColumnChooser";
  355. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  356. i.BeginGroup = true;
  357. });
  358. t.Items.Add(i =>
  359. {
  360. i.Text = "Drucken";
  361. i.Name = "Print";
  362. i.Image.IconID = IconID.PrintDefaultprinter16x16;
  363. i.BeginGroup = true;
  364. });
  365. t.Items.Add(i =>
  366. {
  367. i.Text = "Zurücksetzen";
  368. i.Name = "ResetSettings";
  369. i.Image.IconID = IconID.ActionsReset16x16;
  370. i.BeginGroup = true;
  371. });
  372. });
  373. s.Columns.Add(column =>
  374. {
  375. column.Caption = "#";
  376. column.FieldName = "CustomNumber";
  377. column.MinWidth = 50;
  378. column.Width = new Unit(60, UnitType.Pixel);
  379. column.Settings.AutoFilterCondition = AutoFilterCondition.Equals;
  380. column.Settings.ShowFilterRowMenu = DefaultBoolean.False;
  381. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  382. column.SortIndex = 0;
  383. column.SortOrder = ColumnSortOrder.Ascending;
  384. column.Settings.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
  385. });
  386. s.Columns.Add(column =>
  387. {
  388. column.Caption = "Bezeichnung";
  389. column.FieldName = "Description";
  390. column.MinWidth = 220;
  391. column.Width = new Unit(250, UnitType.Pixel);
  392. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  393. });
  394. s.Columns.Add(column =>
  395. {
  396. column.Caption = "Baustelle";
  397. column.FieldName = "SiteDescription";
  398. column.MinWidth = 150;
  399. column.Width = new Unit(10, UnitType.Percentage);
  400. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  401. });
  402. s.Columns.Add(column =>
  403. {
  404. column.Caption = "Kst.-Stelle";
  405. column.FieldName = "SiteCustomNumber";
  406. column.MinWidth = 120;
  407. column.Width = new Unit(130, UnitType.Pixel);
  408. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  409. });
  410. s.Columns.Add(column =>
  411. {
  412. column.Caption = "Mitarbeiter";
  413. column.FieldName = "UserDescription";
  414. column.MinWidth = 150;
  415. column.Width = new Unit(15, UnitType.Percentage);
  416. column.SetDataItemTemplateContent(c =>
  417. {
  418. var userDescriptions = DataBinder.Eval(c.DataItem, "UserDescriptions") as List<string>;
  419. if (userDescriptions != null)
  420. {
  421. foreach (var description in userDescriptions)
  422. {
  423. var split = description.Split('|');
  424. if (split.Length > 1)
  425. html.ViewContext.Writer.Write(
  426. "<span style=\"float: left\">" + split[0] + "</span>" +
  427. "<span style=\"float: right\">" + split[1] + "</span><br />");
  428. else
  429. html.ViewContext.Writer.Write(
  430. "<span>" + split[0] + "</span><br />");
  431. }
  432. }
  433. });
  434. });
  435. s.Columns.Add(column =>
  436. {
  437. column.Caption = "Nachtrag";
  438. column.FieldName = "AppendixDescription";
  439. column.MinWidth = 100;
  440. column.Width = new Unit(100, UnitType.Pixel);
  441. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  442. });
  443. s.Columns.Add(column =>
  444. {
  445. column.Caption = "Einreichung";
  446. column.FieldName = "ReceiptDate";
  447. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  448. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.DateRangePicker;
  449. column.MinWidth = 110;
  450. column.Width = new Unit(110, UnitType.Pixel);
  451. });
  452. s.Columns.Add(column =>
  453. {
  454. column.Caption = "Tage VA-NT";
  455. column.FieldName = "DaysReceiptToAppendixOffering";
  456. column.MinWidth = 100;
  457. column.Width = new Unit(110, UnitType.Pixel);
  458. column.HeaderStyle.Wrap = DefaultBoolean.True;
  459. });
  460. s.Columns.Add(column =>
  461. {
  462. column.Caption = "Schätzung";
  463. column.FieldName = "Value";
  464. column.PropertiesEdit.DisplayFormatString = "c2";
  465. column.MinWidth = 100;
  466. column.Width = new Unit(120, UnitType.Pixel);
  467. });
  468. s.Columns.Add(column =>
  469. {
  470. column.Caption = "Bewert.";
  471. column.FieldName = "Percentage";
  472. column.PropertiesEdit.DisplayFormatString = "p0";
  473. column.MinWidth = 70;
  474. column.Width = new Unit(80, UnitType.Pixel);
  475. });
  476. s.Columns.Add(column =>
  477. {
  478. column.Caption = "Schätzung bew.";
  479. column.FieldName = "PercentageValue";
  480. column.PropertiesEdit.DisplayFormatString = "c2";
  481. column.MinWidth = 100;
  482. column.Width = new Unit(120, UnitType.Pixel);
  483. column.HeaderStyle.Wrap = DefaultBoolean.True;
  484. });
  485. s.Columns.Add(column =>
  486. {
  487. column.Caption = "Status";
  488. column.FieldName = "StatusDescription";
  489. column.MinWidth = 110;
  490. column.Width = new Unit(120, UnitType.Pixel);
  491. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  492. });
  493. s.Columns.Add(column =>
  494. {
  495. column.Caption = "VA-Kategorien";
  496. column.FieldName = "DisturbanceValuesDescription";
  497. column.MinWidth = 190;
  498. column.Width = new Unit(220, UnitType.Pixel);
  499. column.SetFilterTemplateContent(f =>
  500. {
  501. html.DevExpress().TextBox(t =>
  502. {
  503. t.Name = "devTextBoxFilterDisturbanceValuesDescription";
  504. t.Width = new Unit(100, UnitType.Percentage);
  505. t.Properties.ClientSideEvents.Init =
  506. "function (s, e) { " +
  507. " if (customFilters != null && customFilters['DisturbanceValuesDescription'] != null) {" +
  508. " s.SetText(customFilters['DisturbanceValuesDescription']); }}";
  509. t.Properties.ClientSideEvents.KeyUp =
  510. "function (s, e) { " +
  511. " customFilters['DisturbanceValuesDescription'] = s.GetValue(); " +
  512. " setFilterTimer(customFilterDelay, function () { devGridViewDeviation.PerformCallback(); }); }";
  513. }).Render();
  514. });
  515. column.UnboundType = DevExpress.Data.UnboundColumnType.Decimal;
  516. column.UnboundExpression = "[DisturbanceValueSum]";
  517. });
  518. s.Columns.Add(column =>
  519. {
  520. column.Caption = "Art";
  521. column.FieldName = "KindDescription";
  522. column.MinWidth = 140;
  523. column.Width = new Unit(140, UnitType.Pixel);
  524. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  525. });
  526. s.Columns.Add(column =>
  527. {
  528. column.Caption = "Kommentar";
  529. column.FieldName = "Comment";
  530. column.CellStyle.Wrap = DefaultBoolean.True;
  531. column.SetDataItemTemplateContent(c =>
  532. {
  533. var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id"));
  534. var comment = DataBinder.Eval(c.DataItem, "Comment");
  535. var text = comment == null
  536. ? String.Empty
  537. : comment.ToString();
  538. var isLongText = text.ToString().Length > 40;
  539. if (isLongText)
  540. {
  541. html.ViewContext.Writer.Write(text.Substring(0, 40) + " ...");
  542. html.ViewContext.Writer.Write(
  543. "<a href=\"#\" onclick='showComment(\"deviation\"," + id + ",this)'><br />Anzeigen</a>");
  544. }
  545. else
  546. html.ViewContext.Writer.Write(text);
  547. if (_userContext.CurrentUser.HasFunction("Deviation-Deviations-Edit-Comment"))
  548. html.ViewContext.Writer.Write(
  549. (isLongText ? "&nbsp;" : "<br/>") +
  550. "&nbsp;<a href=\"#\" onclick='editComment(\"deviation\"," + id + ",function() { devGridViewDeviation.PerformCallback(); })'>Bearbeiten</a>");
  551. });
  552. column.MinWidth = 120;
  553. column.Width = new Unit(8, UnitType.Percentage);
  554. });
  555. //s.SetDataRowTemplateContent(t =>
  556. //{
  557. // var list = t.Grid.DataSource as List<DeviationDataModel>;
  558. // var model = list.First(l => l.Id == (int)t.KeyValue);
  559. // html.RenderPartial("~/Views/Deviations/_DeviationDataRowPartial.cshtml", model, html.ViewData);
  560. //});
  561. var totalDaysReceiptToAppendixOfferingSum = 0;
  562. var totalDaysReceiptToAppendixOfferingCount = 0;
  563. var totalDisturbanceSum = default(decimal);
  564. var totalPercentageValueSumZeroSummarize = default(decimal);
  565. s.CustomSummaryCalculate = (sender, e) =>
  566. {
  567. if (e.SummaryProcess == CustomSummaryProcess.Start)
  568. {
  569. totalDaysReceiptToAppendixOfferingSum = 0;
  570. totalDaysReceiptToAppendixOfferingCount = 0;
  571. totalDisturbanceSum = 0;
  572. totalPercentageValueSumZeroSummarize = 0;
  573. }
  574. if (e.SummaryProcess == CustomSummaryProcess.Calculate)
  575. {
  576. var daysReceiptToAppendixOfferingVal = e.GetValue("DaysReceiptToAppendixOffering");
  577. if (daysReceiptToAppendixOfferingVal != null)
  578. {
  579. totalDaysReceiptToAppendixOfferingCount++;
  580. totalDaysReceiptToAppendixOfferingSum += Convert.ToInt32(daysReceiptToAppendixOfferingVal);
  581. }
  582. var disturbanceVal = e.GetValue("DisturbanceValueSum");
  583. if (disturbanceVal != null)
  584. totalDisturbanceSum += Convert.ToDecimal(disturbanceVal);
  585. var isZeroValueSum = e.GetValue("IsZeroSummarize");
  586. if (isZeroValueSum == null || (isZeroValueSum != null && !Convert.ToBoolean(isZeroValueSum)))
  587. {
  588. var percentageValue = e.GetValue("PercentageValue");
  589. if (percentageValue != null)
  590. totalPercentageValueSumZeroSummarize += (decimal)percentageValue;
  591. }
  592. }
  593. if (e.SummaryProcess == CustomSummaryProcess.Finalize)
  594. {
  595. var summaryItem = (ASPxSummaryItem)e.Item;
  596. if (summaryItem.FieldName == "DaysReceiptToAppendixOffering")
  597. {
  598. if (totalDaysReceiptToAppendixOfferingSum == 0 || totalDaysReceiptToAppendixOfferingCount == 0)
  599. e.TotalValue = 0;
  600. else
  601. e.TotalValue = totalDaysReceiptToAppendixOfferingSum / totalDaysReceiptToAppendixOfferingCount;
  602. }
  603. else if (summaryItem.FieldName == "DisturbanceValuesDescription")
  604. e.TotalValue = totalDisturbanceSum;
  605. else if (summaryItem.FieldName == "StatusDescription")
  606. e.TotalValue = totalPercentageValueSumZeroSummarize;
  607. }
  608. };
  609. s.TotalSummary.Add(new ASPxSummaryItem
  610. {
  611. SummaryType = DevExpress.Data.SummaryItemType.Count,
  612. FieldName = "SiteDescription",
  613. DisplayFormat = "Anzahl<br/><i>{0:n0}</i>"
  614. });
  615. s.GroupSummary.Add(new ASPxSummaryItem
  616. {
  617. SummaryType = DevExpress.Data.SummaryItemType.Count,
  618. FieldName = "SiteDescription",
  619. DisplayFormat = "Anzahl = {0:n0}"
  620. });
  621. s.TotalSummary.Add(new ASPxSummaryItem
  622. {
  623. FieldName = "Value",
  624. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  625. DisplayFormat = "Schätzung ∑<br/><i>{0:c2}</i>"
  626. });
  627. s.GroupSummary.Add(new ASPxSummaryItem
  628. {
  629. FieldName = "Value",
  630. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  631. DisplayFormat = "Schätzung ∑ = <i>{0:c2}</i>"
  632. });
  633. s.TotalSummary.Add(new ASPxSummaryItem
  634. {
  635. FieldName = "Percentage",
  636. SummaryType = DevExpress.Data.SummaryItemType.Average,
  637. DisplayFormat = "Bew. Ø<br/><i>{0:p0}</i>"
  638. });
  639. s.GroupSummary.Add(new ASPxSummaryItem
  640. {
  641. FieldName = "Percentage",
  642. SummaryType = DevExpress.Data.SummaryItemType.Average,
  643. DisplayFormat = "Bew. Ø = <i>{0:p0}</i>"
  644. });
  645. s.TotalSummary.Add(new ASPxSummaryItem
  646. {
  647. FieldName = "PercentageValue",
  648. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  649. DisplayFormat = "Schätz. bew. ∑<br/><i>{0:c2}</i>"
  650. });
  651. s.GroupSummary.Add(new ASPxSummaryItem
  652. {
  653. FieldName = "PercentageValue",
  654. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  655. DisplayFormat = "Schätz. bew. ∑ = <i>{0:c2}</i>"
  656. });
  657. s.TotalSummary.Add(new ASPxSummaryItem
  658. {
  659. FieldName = "StatusDescription",
  660. SummaryType = DevExpress.Data.SummaryItemType.Custom,
  661. DisplayFormat = "Schätz. o. Sta. ∑<br/><i>{0:c2}</i>"
  662. });
  663. s.GroupSummary.Add(new ASPxSummaryItem
  664. {
  665. FieldName = "StatusDescription",
  666. SummaryType = DevExpress.Data.SummaryItemType.Custom,
  667. DisplayFormat = "Schätz. o. Sta. ∑ = <i>{0:c2}</i>"
  668. });
  669. s.TotalSummary.Add(new ASPxSummaryItem
  670. {
  671. FieldName = "DaysReceiptToAppendixOffering",
  672. SummaryType = DevExpress.Data.SummaryItemType.Custom,
  673. DisplayFormat = "T. VA-NT Ø<br/><i>{0:n0}</i>"
  674. });
  675. s.GroupSummary.Add(new ASPxSummaryItem
  676. {
  677. FieldName = "DaysReceiptToAppendixOffering",
  678. SummaryType = DevExpress.Data.SummaryItemType.Custom,
  679. DisplayFormat = "Tage VA-NT Ø = <i>{0:n0}</i>"
  680. });
  681. s.TotalSummary.Add(new ASPxSummaryItem
  682. {
  683. FieldName = "DisturbanceValuesDescription",
  684. SummaryType = DevExpress.Data.SummaryItemType.Custom,
  685. DisplayFormat = "Kat. ∑<br/><i>{0:c2}</i>"
  686. });
  687. s.GroupSummary.Add(new ASPxSummaryItem
  688. {
  689. FieldName = "DisturbanceValuesDescription",
  690. SummaryType = DevExpress.Data.SummaryItemType.Custom,
  691. DisplayFormat = "Kat. ∑ = <i>{0:c2}</i>"
  692. });
  693. s.HtmlRowPrepared = (sender, e) =>
  694. {
  695. var displayColor = e.GetValue("DisplayColor");
  696. if (displayColor != null && e.RowType == GridViewRowType.Data)
  697. e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml(displayColor.ToString());
  698. };
  699. s.ClientLayout = (sender, e) =>
  700. {
  701. if (e.LayoutMode == ClientLayoutMode.Loading)
  702. {
  703. if (System.Web.HttpContext.Current.Session["DeviationGridState"] != null)
  704. e.LayoutData = (string)System.Web.HttpContext.Current.Session["DeviationGridState"];
  705. }
  706. else
  707. System.Web.HttpContext.Current.Session["DeviationGridState"] = e.LayoutData;
  708. };
  709. s.PreRender = s.BeforeGetCallbackResult = (sender, e) => {
  710. MVCxGridView gridView = sender as MVCxGridView;
  711. System.Web.HttpContext.Current.Session["DeviationGridViewState"] = new MVCxGridViewState(gridView);
  712. };
  713. s.CustomColumnSort = (sender, e) =>
  714. {
  715. if (e.Column.FieldName != "CustomNumber") return;
  716. int.TryParse(e.GetRow1Value("CustomNumber").ToString(), out int rowVal1);
  717. int.TryParse(e.GetRow2Value("CustomNumber").ToString(), out int rowVal2);
  718. e.Result = (rowVal1).CompareTo(rowVal2);
  719. e.Handled = true;
  720. };
  721. s.ClientSideEvents.BeginCallback = "function (s, e) { " +
  722. "e.customArgs['scrollHeight'] = [ gridScrollHeight ]; " +
  723. "e.customArgs['customFilters'] = [ JSON.stringify(customFilters) ]; }";
  724. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  725. s.Styles.Footer.CssClass += "devExGridFooterPanel";
  726. s.Styles.GroupRow.CssClass += "devExGridGroupRow";
  727. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  728. return s;
  729. }
  730. /// <summary>
  731. /// Creates GridViewSettings for the appendix gridView
  732. /// </summary>
  733. /// <param name="html">Current HtmlHelper context.</param>
  734. public static GridViewSettings AppendixGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  735. {
  736. var s = new GridViewSettings();
  737. s.Name = "devGridViewAppendix";
  738. s.KeyFieldName = "Id";
  739. s.CallbackRouteValues = new { Controller = "Appendix", Action = "PartialAppendices" };
  740. s.Width = Unit.Percentage(99);
  741. s.Settings.ShowHeaderFilterButton = true;
  742. s.Settings.ShowFilterRow = true;
  743. s.Settings.ShowFilterRowMenu = true;
  744. s.Settings.ShowFooter = true;
  745. s.Settings.ShowGroupPanel = true;
  746. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  747. s.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto;
  748. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  749. s.Settings.VerticalScrollableHeight =
  750. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  751. ? 400
  752. : (int)html.ViewData["ScrollHeight"];
  753. s.SettingsExport.Landscape = true;
  754. s.SettingsExport.FileName = "Nachtragsliste";
  755. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  756. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  757. s.SettingsBehavior.EnableCustomizationWindow = true;
  758. s.SettingsBehavior.AllowHeaderFilter = true;
  759. s.SettingsPager.AlwaysShowPager = true;
  760. s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.Control;
  761. s.SettingsCookies.Enabled = true;
  762. s.SettingsCookies.CookiesID = "appendixGridStateCookie";
  763. s.SettingsPager.Position = PagerPosition.Bottom;
  764. s.SettingsPager.PageSizeItemSettings.Visible = true;
  765. s.SettingsPager.FirstPageButton.Visible = true;
  766. s.SettingsPager.LastPageButton.Visible = true;
  767. s.SettingsPager.NumericButtonCount = 5;
  768. s.Toolbars.Add(t =>
  769. {
  770. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  771. refreshItem.Text = "Aktualisieren";
  772. var expandItem = t.Items.Add(GridViewToolbarCommand.FullExpand);
  773. expandItem.Text = "Alle aufklappen";
  774. var collapseItem = t.Items.Add(GridViewToolbarCommand.FullCollapse);
  775. collapseItem.Text = "Alle einklappen";
  776. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  777. filterItem.Text = "Filter entfernen";
  778. t.Items.Add(i =>
  779. {
  780. i.Text = "Spalten anzeigen / ausblenden";
  781. i.Name = "ToggleColumnChooser";
  782. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  783. i.BeginGroup = true;
  784. });
  785. t.Items.Add(i =>
  786. {
  787. i.Text = "Drucken";
  788. i.Name = "Print";
  789. i.Image.IconID = IconID.PrintDefaultprinter16x16;
  790. i.BeginGroup = true;
  791. });
  792. t.Items.Add(i =>
  793. {
  794. i.Text = "Zurücksetzen";
  795. i.Name = "ResetSettings";
  796. i.Image.IconID = IconID.ActionsReset16x16;
  797. i.BeginGroup = true;
  798. });
  799. });
  800. s.Columns.Add(column =>
  801. {
  802. column.Caption = "#";
  803. column.FieldName = "CustomNumber";
  804. column.MinWidth = 80;
  805. column.Width = new Unit(80, UnitType.Pixel);
  806. column.Settings.AutoFilterCondition = AutoFilterCondition.Equals;
  807. column.Settings.ShowFilterRowMenu = DefaultBoolean.False;
  808. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  809. column.Settings.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
  810. column.SortIndex = 0;
  811. column.SortOrder = ColumnSortOrder.Ascending;
  812. });
  813. s.Columns.Add(column =>
  814. {
  815. column.Caption = "Bezeichnung";
  816. column.FieldName = "Description";
  817. column.MinWidth = 200;
  818. column.Width = new Unit(14, UnitType.Percentage);
  819. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  820. column.SetDataItemTemplateContent(c =>
  821. {
  822. var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id"));
  823. var description = DataBinder.Eval(c.DataItem, "Description");
  824. html.ViewContext.Writer.Write(description +
  825. "<br/><a href=\"#\" onclick='viewAppendix(" + id + ")'>Details anzeigen</a>");
  826. });
  827. });
  828. s.Columns.Add(column =>
  829. {
  830. column.Caption = "Baustelle";
  831. column.FieldName = "SiteDescription";
  832. column.MinWidth = 150;
  833. column.Width = new Unit(10, UnitType.Percentage);
  834. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  835. });
  836. s.Columns.Add(column =>
  837. {
  838. column.Caption = "Kst.-Stelle";
  839. column.FieldName = "SiteCustomNumber";
  840. column.MinWidth = 120;
  841. column.Width = new Unit(120, UnitType.Pixel);
  842. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  843. });
  844. s.Columns.Add(column =>
  845. {
  846. column.Caption = "Mitarbeiter";
  847. column.FieldName = "UserDescription";
  848. column.MinWidth = 150;
  849. column.Width = new Unit(15, UnitType.Percentage);
  850. column.SetDataItemTemplateContent(c =>
  851. {
  852. var userDescriptions = DataBinder.Eval(c.DataItem, "UserDescriptions") as List<string>;
  853. if (userDescriptions != null)
  854. {
  855. foreach (var description in userDescriptions)
  856. {
  857. var split = description.Split('|');
  858. if (split.Length > 1)
  859. html.ViewContext.Writer.Write(
  860. "<span style=\"float: left\">" + split[0] + "</span>" +
  861. "<span style=\"float: right\">" + split[1] + "</span><br />");
  862. else
  863. html.ViewContext.Writer.Write(
  864. "<span>" + split[0] + "</span><br />");
  865. }
  866. }
  867. });
  868. });
  869. s.Columns.Add(column =>
  870. {
  871. column.Caption = "Einreichung";
  872. column.FieldName = "OfferingDate";
  873. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  874. column.MinWidth = 110;
  875. column.Width = new Unit(110, UnitType.Pixel);
  876. });
  877. s.Columns.Add(column =>
  878. {
  879. column.Caption = "Angeb. -Summe";
  880. column.FieldName = "OfferingValue";
  881. column.PropertiesEdit.DisplayFormatString = "c2";
  882. column.MinWidth = 110;
  883. column.Width = new Unit(110, UnitType.Pixel);
  884. column.HeaderStyle.Wrap = DefaultBoolean.True;
  885. });
  886. s.Columns.Add(column =>
  887. {
  888. column.Caption = "Verhand. -Summe";
  889. column.FieldName = "NegotiationValue";
  890. column.PropertiesEdit.DisplayFormatString = "c2";
  891. column.MinWidth = 110;
  892. column.Width = new Unit(110, UnitType.Pixel);
  893. column.HeaderStyle.Wrap = DefaultBoolean.True;
  894. });
  895. s.Columns.Add(column =>
  896. {
  897. column.Caption = "Anteil Verh. zu Angeb.";
  898. column.FieldName = "RelationOfferingToNegotiation";
  899. column.PropertiesEdit.DisplayFormatString = "p2";
  900. column.MinWidth = 115;
  901. column.Width = new Unit(115, UnitType.Pixel);
  902. column.HeaderStyle.Wrap = DefaultBoolean.True;
  903. });
  904. s.Columns.Add(column =>
  905. {
  906. column.Caption = "VA";
  907. column.FieldName = "DeviationDescription";
  908. column.MinWidth = 70;
  909. column.Width = new Unit(6, UnitType.Percentage);
  910. });
  911. s.Columns.Add(column =>
  912. {
  913. column.Caption = "Fak. Ang. zu VA";
  914. column.FieldName = "RelationOfferingToDeviations";
  915. column.PropertiesEdit.DisplayFormatString = "n2";
  916. column.MinWidth = 100;
  917. column.Width = new Unit(100, UnitType.Pixel);
  918. column.HeaderStyle.Wrap = DefaultBoolean.True;
  919. });
  920. s.Columns.Add(column =>
  921. {
  922. column.Caption = "AR gestellt";
  923. column.FieldName = "OrderInvoiceCreatedDescription";
  924. column.MinWidth = 60;
  925. column.Width = new Unit(80, UnitType.Pixel);
  926. column.HeaderStyle.Wrap = DefaultBoolean.True;
  927. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  928. column.SetDataItemTemplateContent(c =>
  929. {
  930. var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id"));
  931. var description = DataBinder.Eval(c.DataItem, "OrderInvoiceCreatedDescription");
  932. if (_userContext.CurrentUser.HasFunction("Appendix-Appendices-Edit"))
  933. html.ViewContext.Writer.Write(description +
  934. "<br/><a href=\"#\" onclick='editOrderInvoiceCreated(" + id + "," +
  935. " function() { devGridViewAppendix.PerformCallback(); })'>Ändern</a>");
  936. });
  937. });
  938. s.Columns.Add(column =>
  939. {
  940. column.Caption = "Status";
  941. column.FieldName = "StateDescription";
  942. column.MinWidth = 100;
  943. column.Width = new Unit(100, UnitType.Pixel);
  944. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  945. });
  946. s.Columns.Add(column =>
  947. {
  948. column.Caption = "Bestellsch.-Datum";
  949. column.FieldName = "OrderDate";
  950. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  951. column.MinWidth = 110;
  952. column.Width = new Unit(110, UnitType.Pixel);
  953. column.HeaderStyle.Wrap = DefaultBoolean.True;
  954. });
  955. s.Columns.Add(column =>
  956. {
  957. column.Caption = "Bestellsch.-Nummer";
  958. column.FieldName = "OrderNumber";
  959. column.MinWidth = 90;
  960. column.Width = new Unit(110, UnitType.Pixel);
  961. column.HeaderStyle.Wrap = DefaultBoolean.True;
  962. });
  963. s.Columns.Add(column =>
  964. {
  965. column.Caption = "NT-Kategorien";
  966. column.FieldName = "CategoryValuesDescription";
  967. column.MinWidth = 200;
  968. column.Width = new Unit(12, UnitType.Percentage);
  969. });
  970. s.Columns.Add(column =>
  971. {
  972. column.Caption = "Kommentar";
  973. column.FieldName = "Comment";
  974. column.CellStyle.Wrap = DefaultBoolean.True;
  975. column.SetDataItemTemplateContent(c =>
  976. {
  977. var id = Convert.ToInt32(DataBinder.Eval(c.DataItem, "Id"));
  978. var comment = DataBinder.Eval(c.DataItem, "Comment");
  979. var text = comment == null
  980. ? String.Empty
  981. : comment.ToString();
  982. var isLongText = text.ToString().Length > 40;
  983. if (isLongText)
  984. {
  985. html.ViewContext.Writer.Write(text.Substring(0, 40) + " ...");
  986. html.ViewContext.Writer.Write(
  987. "<a href=\"#\" onclick='showComment(\"appendix\"," + id + ",this)'><br />Anzeigen</a>");
  988. }
  989. else
  990. html.ViewContext.Writer.Write(text);
  991. if (_userContext.CurrentUser.HasFunction("Deviation-Deviations-Edit-Comment"))
  992. html.ViewContext.Writer.Write(
  993. (isLongText ? "&nbsp;" : "<br/>") +
  994. "<a href=\"#\" onclick='editComment(\"appendix\"," + id + ",function() { devGridViewAppendix.PerformCallback(); })'>Bearbeiten</a>");
  995. });
  996. column.MinWidth = 250;
  997. column.Width = new Unit(14, UnitType.Percentage);
  998. });
  999. s.TotalSummary.Add(new ASPxSummaryItem
  1000. {
  1001. SummaryType = DevExpress.Data.SummaryItemType.Count,
  1002. FieldName = "Description",
  1003. DisplayFormat = "Anzahl<br/><i>{0:n0}</i>"
  1004. });
  1005. s.GroupSummary.Add(new ASPxSummaryItem
  1006. {
  1007. SummaryType = DevExpress.Data.SummaryItemType.Count,
  1008. FieldName = "Description",
  1009. DisplayFormat = "Anzahl = {0:n0}"
  1010. });
  1011. s.TotalSummary.Add(new ASPxSummaryItem
  1012. {
  1013. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  1014. FieldName = "OfferingValue",
  1015. DisplayFormat = "Angeb. ∑<br/><i>{0:c2}</i>"
  1016. });
  1017. s.GroupSummary.Add(new ASPxSummaryItem
  1018. {
  1019. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  1020. FieldName = "OfferingValue",
  1021. DisplayFormat = "Angeb.-∑ = {0:c2}"
  1022. });
  1023. s.TotalSummary.Add(new ASPxSummaryItem
  1024. {
  1025. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  1026. FieldName = "NegotiationValue",
  1027. DisplayFormat = "Verhand. ∑<br/><i>{0:c2}</i>"
  1028. });
  1029. s.GroupSummary.Add(new ASPxSummaryItem
  1030. {
  1031. SummaryType = DevExpress.Data.SummaryItemType.Sum,
  1032. FieldName = "NegotiationValue",
  1033. DisplayFormat = "Verhand.-∑ = {0:c2}"
  1034. });
  1035. s.HtmlRowPrepared = (sender, e) =>
  1036. {
  1037. var state = e.GetValue("State") as StateDataModel;
  1038. if (e.RowType == GridViewRowType.Data && state != null && !state.IsDefault)
  1039. e.Row.BackColor = System.Drawing.ColorTranslator.FromHtml(state.HexColor);
  1040. };
  1041. s.ClientLayout = (sender, e) =>
  1042. {
  1043. if (e.LayoutMode == ClientLayoutMode.Loading)
  1044. {
  1045. if (System.Web.HttpContext.Current.Session["AppendixGridState"] != null)
  1046. e.LayoutData = (string)System.Web.HttpContext.Current.Session["AppendixGridState"];
  1047. }
  1048. else
  1049. System.Web.HttpContext.Current.Session["AppendixGridState"] = e.LayoutData;
  1050. };
  1051. s.PreRender = s.BeforeGetCallbackResult = (sender, e) => {
  1052. MVCxGridView gridView = sender as MVCxGridView;
  1053. System.Web.HttpContext.Current.Session["AppendixGridViewState"] = new MVCxGridViewState(gridView);
  1054. };
  1055. s.CustomColumnSort = (sender, e) =>
  1056. {
  1057. if (e.Column.FieldName != "CustomNumber") return;
  1058. int.TryParse(e.GetRow1Value("CustomNumber").ToString(), out int rowVal1);
  1059. int.TryParse(e.GetRow2Value("CustomNumber").ToString(), out int rowVal2);
  1060. e.Result = (rowVal1).CompareTo(rowVal2);
  1061. e.Handled = true;
  1062. };
  1063. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  1064. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  1065. s.ClientSideEvents.ColumnResized = "function (s, e) { setGridScrollHeight(); }";
  1066. //s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  1067. s.Styles.Footer.CssClass += "devExGridFooterPanel";
  1068. s.Styles.GroupRow.CssClass += "devExGridGroupRow";
  1069. return s;
  1070. }
  1071. /// <summary>
  1072. /// Creates GridViewSettings for the mailNotifications gridView
  1073. /// </summary>
  1074. /// <param name="html">Current HtmlHelper context.</param>
  1075. public static GridViewSettings MailNotificationGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  1076. {
  1077. var s = new GridViewSettings();
  1078. s.Name = "devGridViewMailNotifications";
  1079. s.KeyFieldName = "Id";
  1080. s.CallbackRouteValues = new { Controller = "Misc", Action = "PartialMailNotifications" };
  1081. s.Width = Unit.Percentage(99);
  1082. s.Settings.ShowHeaderFilterButton = true;
  1083. s.Settings.ShowFilterRow = true;
  1084. s.Settings.ShowFilterRowMenu = true;
  1085. s.Settings.ShowFooter = true;
  1086. s.Settings.ShowGroupPanel = true;
  1087. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  1088. s.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto;
  1089. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  1090. s.Settings.VerticalScrollableHeight =
  1091. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  1092. ? 400
  1093. : (int)html.ViewData["ScrollHeight"];
  1094. s.SettingsExport.Landscape = true;
  1095. s.SettingsExport.FileName = "Benachrichtigungsliste";
  1096. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  1097. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  1098. s.SettingsBehavior.EnableCustomizationWindow = true;
  1099. s.SettingsBehavior.AllowHeaderFilter = true;
  1100. s.SettingsPager.AlwaysShowPager = true;
  1101. s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.Control;
  1102. s.SettingsCookies.Enabled = true;
  1103. s.SettingsCookies.CookiesID = "mailNotificationGridStateCookie";
  1104. s.SettingsPager.Position = PagerPosition.Bottom;
  1105. s.SettingsPager.PageSizeItemSettings.Visible = true;
  1106. s.SettingsPager.FirstPageButton.Visible = true;
  1107. s.SettingsPager.LastPageButton.Visible = true;
  1108. s.SettingsPager.NumericButtonCount = 5;
  1109. s.Toolbars.Add(t =>
  1110. {
  1111. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  1112. refreshItem.Text = "Aktualisieren";
  1113. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  1114. filterItem.Text = "Filter entfernen";
  1115. t.Items.Add(i =>
  1116. {
  1117. i.Text = "Spalten anzeigen / ausblenden";
  1118. i.Name = "ToggleColumnChooser";
  1119. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  1120. i.BeginGroup = true;
  1121. });
  1122. t.Items.Add(i =>
  1123. {
  1124. i.Text = "Zurücksetzen";
  1125. i.Name = "ResetSettings";
  1126. i.Image.IconID = IconID.ActionsReset16x16;
  1127. i.BeginGroup = true;
  1128. });
  1129. });
  1130. if (_userContext.CurrentUser.HasFunction("Misc-MailNotifications-Edit"))
  1131. {
  1132. s.Columns.Add(column =>
  1133. {
  1134. column.Caption = "#";
  1135. column.SetDataItemTemplateContent(c =>
  1136. {
  1137. html.ViewContext.Writer.Write(
  1138. "<a href=\"#\" onclick=\"editMailNotification(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Bearbeiten</a>&nbsp;");
  1139. html.ViewContext.Writer.Write(
  1140. "<a href=\"#\" onclick=\"confirmDelete(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Löschen</a><br />");
  1141. html.ViewContext.Writer.Write(
  1142. "<a href=\"#\" onclick=\"confirmProcess(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Sofort ausführen</a>");
  1143. });
  1144. column.SetHeaderTemplateContent(c =>
  1145. {
  1146. html.ViewContext.Writer.Write(
  1147. "<a href=\"#\" onclick=\"editMailNotification(-1)\">Neu</a>&nbsp;");
  1148. });
  1149. column.Settings.AllowDragDrop = DefaultBoolean.False;
  1150. column.Settings.AllowSort = DefaultBoolean.False;
  1151. column.Width = new Unit(150, UnitType.Pixel);
  1152. });
  1153. }
  1154. s.Columns.Add(column =>
  1155. {
  1156. column.Caption = "Zeitplan";
  1157. column.FieldName = "CronExpressionDescription";
  1158. column.MinWidth = 100;
  1159. column.Width = new Unit(20, UnitType.Percentage);
  1160. });
  1161. s.Columns.Add(column =>
  1162. {
  1163. column.Caption = "Benachrichtigungs-Plugin";
  1164. column.FieldName = "NotificationPluginSystemNameDescription";
  1165. column.Width = new Unit(17.5, UnitType.Percentage);
  1166. });
  1167. s.Columns.Add(column =>
  1168. {
  1169. column.Caption = "Benachrichtigungs-Job";
  1170. column.FieldName = "NotificationJobSystemNameDescription";
  1171. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  1172. column.MinWidth = 110;
  1173. column.Width = new Unit(17.5, UnitType.Percentage);
  1174. });
  1175. s.Columns.Add(column =>
  1176. {
  1177. column.Caption = "Mitarbeiter";
  1178. column.FieldName = "UserDescriptions";
  1179. column.MinWidth = 200;
  1180. column.Width = new Unit(20, UnitType.Percentage);
  1181. column.SetDataItemTemplateContent(c =>
  1182. {
  1183. var userDescriptions = DataBinder.Eval(c.DataItem, "UserDescriptions") as List<string>;
  1184. if (userDescriptions != null)
  1185. {
  1186. foreach (var description in userDescriptions)
  1187. {
  1188. var split = description.Split('|');
  1189. if (split.Length > 1)
  1190. html.ViewContext.Writer.Write(
  1191. "<span style=\"float: left\">" + split[0] + "</span>" +
  1192. "<span style=\"float: right\">" + split[1] + "</span><br />");
  1193. else
  1194. html.ViewContext.Writer.Write(
  1195. "<span>" + split[0] + "</span><br />");
  1196. }
  1197. }
  1198. });
  1199. });
  1200. s.Columns.Add(column =>
  1201. {
  1202. column.Caption = "Nächste Ausführung";
  1203. column.FieldName = "NextExecutionTime";
  1204. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy";
  1205. column.MinWidth = 110;
  1206. column.Width = new Unit(15, UnitType.Percentage);
  1207. });
  1208. s.ClientLayout = (sender, e) =>
  1209. {
  1210. if (e.LayoutMode == ClientLayoutMode.Loading)
  1211. {
  1212. if (System.Web.HttpContext.Current.Session["MailNotificationsGridState"] != null)
  1213. e.LayoutData = (string)System.Web.HttpContext.Current.Session["MailNotificationsGridState"];
  1214. }
  1215. else
  1216. System.Web.HttpContext.Current.Session["MailNotificationsGridState"] = e.LayoutData;
  1217. };
  1218. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  1219. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  1220. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  1221. return s;
  1222. }
  1223. /// <summary>
  1224. /// Creates GridViewSettings for the logs gridView
  1225. /// </summary>
  1226. /// <param name="html">Current HtmlHelper context.</param>
  1227. public static GridViewSettings LogGridViewSettings(this System.Web.Mvc.HtmlHelper html)
  1228. {
  1229. var s = new GridViewSettings();
  1230. s.Name = "devGridViewLog";
  1231. s.KeyFieldName = "Id";
  1232. s.CallbackRouteValues = new { Controller = "Misc", Action = "PartialLogs" };
  1233. s.Width = Unit.Percentage(99);
  1234. s.Settings.ShowHeaderFilterButton = true;
  1235. s.Settings.ShowFilterRow = true;
  1236. s.Settings.ShowFilterRowMenu = true;
  1237. s.Settings.ShowFooter = true;
  1238. s.Settings.ShowGroupPanel = true;
  1239. s.Settings.AutoFilterCondition = AutoFilterCondition.Contains;
  1240. s.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto;
  1241. s.Settings.VerticalScrollBarMode = ScrollBarMode.Auto;
  1242. s.Settings.VerticalScrollableHeight =
  1243. (html.ViewData["ScrollHeight"] == null || (int)html.ViewData["ScrollHeight"] == -1)
  1244. ? 400
  1245. : (int)html.ViewData["ScrollHeight"];
  1246. s.SettingsExport.Landscape = true;
  1247. s.SettingsExport.FileName = "Logliste";
  1248. s.SettingsPopup.CustomizationWindow.Width = new Unit(250, UnitType.Pixel);
  1249. s.SettingsPopup.CustomizationWindow.Height = new Unit(350, UnitType.Pixel);
  1250. s.SettingsBehavior.EnableCustomizationWindow = true;
  1251. s.SettingsBehavior.AllowHeaderFilter = true;
  1252. s.SettingsPager.AlwaysShowPager = true;
  1253. s.SettingsResizing.ColumnResizeMode = ColumnResizeMode.Control;
  1254. s.SettingsCookies.Enabled = true;
  1255. s.SettingsCookies.CookiesID = "logGridStateCookie";
  1256. s.SettingsPager.Position = PagerPosition.Bottom;
  1257. s.SettingsPager.PageSizeItemSettings.Visible = true;
  1258. s.SettingsPager.FirstPageButton.Visible = true;
  1259. s.SettingsPager.LastPageButton.Visible = true;
  1260. s.SettingsPager.NumericButtonCount = 5;
  1261. s.Toolbars.Add(t =>
  1262. {
  1263. var refreshItem = t.Items.Add(GridViewToolbarCommand.Refresh);
  1264. refreshItem.Text = "Aktualisieren";
  1265. var filterItem = t.Items.Add(GridViewToolbarCommand.ClearFilter);
  1266. filterItem.Text = "Filter entfernen";
  1267. t.Items.Add(i =>
  1268. {
  1269. i.Text = "Spalten anzeigen / ausblenden";
  1270. i.Name = "ToggleColumnChooser";
  1271. i.Image.IconID = IconID.OtherViewgridlines16x16gray;
  1272. i.BeginGroup = true;
  1273. });
  1274. t.Items.Add(i =>
  1275. {
  1276. i.Text = "Drucken";
  1277. i.Name = "Print";
  1278. i.Image.IconID = IconID.PrintDefaultprinter16x16;
  1279. i.BeginGroup = true;
  1280. });
  1281. t.Items.Add(i =>
  1282. {
  1283. i.Text = "Zurücksetzen";
  1284. i.Name = "ResetSettings";
  1285. i.Image.IconID = IconID.ActionsReset16x16;
  1286. i.BeginGroup = true;
  1287. });
  1288. });
  1289. s.Columns.Add(column =>
  1290. {
  1291. column.Caption = "#";
  1292. column.SetDataItemTemplateContent(c =>
  1293. {
  1294. html.ViewContext.Writer.Write(
  1295. "<a href=\"#\" onclick=\"viewLog(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Betrachten</a>&nbsp;");
  1296. if (_userContext.CurrentUser.HasFunction("Misc-Logs-Delete"))
  1297. {
  1298. html.ViewContext.Writer.Write(
  1299. "<a href=\"#\" onclick=\"deleteLog(" + DataBinder.Eval(c.DataItem, "Id") + ")\">Löschen</a><br />");
  1300. }
  1301. });
  1302. column.Settings.AllowDragDrop = DefaultBoolean.False;
  1303. column.Settings.AllowSort = DefaultBoolean.False;
  1304. column.Width = new Unit(150, UnitType.Pixel);
  1305. });
  1306. s.Columns.Add(column =>
  1307. {
  1308. column.Caption = "Level";
  1309. column.FieldName = "LogLevelDescription";
  1310. column.MinWidth = 100;
  1311. column.Width = new Unit(8, UnitType.Percentage);
  1312. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  1313. });
  1314. s.Columns.Add(column =>
  1315. {
  1316. column.Caption = "Betreff";
  1317. column.FieldName = "ShortMessage";
  1318. column.MinWidth = 150;
  1319. column.Width = new Unit(12, UnitType.Percentage);
  1320. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  1321. });
  1322. s.Columns.Add(column =>
  1323. {
  1324. column.Caption = "Nachricht";
  1325. column.FieldName = "FullMessage";
  1326. column.MinWidth = 200;
  1327. column.Width = new Unit(20, UnitType.Percentage);
  1328. column.SetDataItemTemplateContent(c =>
  1329. {
  1330. var fullMessage = DataBinder.Eval(c.DataItem, "FullMessage");
  1331. var text = fullMessage == null
  1332. ? String.Empty
  1333. : fullMessage.ToString();
  1334. if (text.ToString().Length > 80)
  1335. html.ViewContext.Writer.Write(text.Substring(0, 80) + " ...");
  1336. else
  1337. html.ViewContext.Writer.Write(text);
  1338. });
  1339. });
  1340. s.Columns.Add(column =>
  1341. {
  1342. column.Caption = "IP-Adresse";
  1343. column.FieldName = "IpAddress";
  1344. column.MinWidth = 130;
  1345. column.Width = new Unit(10, UnitType.Percentage);
  1346. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  1347. });
  1348. s.Columns.Add(column =>
  1349. {
  1350. column.Caption = "Mitarbeiter";
  1351. column.FieldName = "UserDescription";
  1352. column.MinWidth = 130;
  1353. column.Width = new Unit(10, UnitType.Percentage);
  1354. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  1355. });
  1356. s.Columns.Add(column =>
  1357. {
  1358. column.Caption = "Datentyp";
  1359. column.FieldName = "EntityType";
  1360. column.MinWidth = 100;
  1361. column.Width = new Unit(8, UnitType.Percentage);
  1362. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  1363. });
  1364. s.Columns.Add(column =>
  1365. {
  1366. column.Caption = "Daten ID";
  1367. column.FieldName = "EntityId";
  1368. column.MinWidth = 100;
  1369. column.Width = new Unit(8, UnitType.Percentage);
  1370. column.SettingsHeaderFilter.Mode = GridHeaderFilterMode.CheckedList;
  1371. });
  1372. s.Columns.Add(column =>
  1373. {
  1374. column.Caption = "Seiten URL";
  1375. column.FieldName = "PageUrl";
  1376. column.MinWidth = 150;
  1377. column.Width = new Unit(12, UnitType.Percentage);
  1378. column.Visible = false;
  1379. });
  1380. s.Columns.Add(column =>
  1381. {
  1382. column.Caption = "Relative URL";
  1383. column.FieldName = "ReferrerUrl";
  1384. column.MinWidth = 100;
  1385. column.Width = new Unit(8, UnitType.Percentage);
  1386. column.Visible = false;
  1387. });
  1388. s.Columns.Add(column =>
  1389. {
  1390. column.Caption = "Zeitpunkt";
  1391. column.FieldName = "CreatedOnLocal";
  1392. column.PropertiesEdit.DisplayFormatString = "dd.MM.yyyy - HH:mm:ss";
  1393. column.MinWidth = 150;
  1394. column.Width = new Unit(12, UnitType.Percentage);
  1395. });
  1396. s.ClientLayout = (sender, e) =>
  1397. {
  1398. if (e.LayoutMode == ClientLayoutMode.Loading)
  1399. {
  1400. if (System.Web.HttpContext.Current.Session["LogGridState"] != null)
  1401. e.LayoutData = (string)System.Web.HttpContext.Current.Session["LogGridState"];
  1402. }
  1403. else
  1404. System.Web.HttpContext.Current.Session["LogGridState"] = e.LayoutData;
  1405. };
  1406. s.PreRender = s.BeforeGetCallbackResult = (sender, e) => {
  1407. MVCxGridView gridView = sender as MVCxGridView;
  1408. System.Web.HttpContext.Current.Session["LogGridViewState"] = new MVCxGridViewState(gridView);
  1409. };
  1410. s.ClientSideEvents.BeginCallback = "function (s, e) { e.customArgs['scrollHeight'] = [ gridScrollHeight ]; }";
  1411. s.ClientSideEvents.ToolbarItemClick = "function (s, e) { onToolbarItemClick(s, e); }";
  1412. s.Styles.AlternatingRow.BackColor = System.Drawing.Color.FromArgb(247, 247, 247);
  1413. return s;
  1414. }
  1415. }
  1416. }