提交单据管理和修改密码功能
This commit is contained in:
@@ -25,6 +25,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
@@ -36,6 +37,11 @@ namespace Lskj.Control
|
||||
/// </summary>
|
||||
public partial class FrmExport : Form
|
||||
{
|
||||
/// <summary>
|
||||
/// 临时导出表无法执行原表的自定义汇总逻辑,保存原表已经计算完成的总计值。
|
||||
/// </summary>
|
||||
private readonly Dictionary<string, object> _exportCustomSummaryValues = new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
public FrmExport()
|
||||
{
|
||||
InitializeComponent();
|
||||
@@ -45,8 +51,57 @@ namespace Lskj.Control
|
||||
gridView1.Appearance.Row.Font = new Font("宋体", 9);
|
||||
gridView1.OptionsView.RowAutoHeight = true;
|
||||
gridView1.RowCellStyle += new RowCellStyleEventHandler(OnGridViewRowCellStyle);
|
||||
gridView1.CustomSummaryCalculate += OnExportCustomSummaryCalculate;
|
||||
Lskj.Control.Model.AutoSizeChange.ControllInitializeSize(this);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 将原表已经计算完成的自定义总计回填到临时导出表。
|
||||
/// </summary>
|
||||
private void OnExportCustomSummaryCalculate(object sender, DevExpress.Data.CustomSummaryEventArgs e)
|
||||
{
|
||||
if (!e.IsTotalSummary || e.SummaryProcess != DevExpress.Data.CustomSummaryProcess.Finalize)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
GridSummaryItem summaryItem = e.Item as GridSummaryItem;
|
||||
object summaryValue;
|
||||
if (summaryItem != null && !string.IsNullOrEmpty(summaryItem.FieldName) &&
|
||||
_exportCustomSummaryValues.TryGetValue(summaryItem.FieldName, out summaryValue))
|
||||
{
|
||||
e.TotalValue = summaryValue;
|
||||
e.TotalValueReady = true;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 百分率自定义汇总在原表中可能已经格式化为字符串,导出前还原为数值。
|
||||
/// </summary>
|
||||
private static object GetExportSummaryValue(GridColumn column, GridSummaryItem summaryItem)
|
||||
{
|
||||
object summaryValue = summaryItem.SummaryValue;
|
||||
string valueText = summaryValue as string;
|
||||
string summaryFormat = summaryItem.DisplayFormat ?? string.Empty;
|
||||
string columnFormat = column == null ? string.Empty : column.DisplayFormat.FormatString;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(valueText) ||
|
||||
(!summaryFormat.Contains("%") && !columnFormat.Contains("%")))
|
||||
{
|
||||
return summaryValue;
|
||||
}
|
||||
|
||||
string percentSymbol = CultureInfo.CurrentCulture.NumberFormat.PercentSymbol;
|
||||
string numericText = valueText.Replace(percentSymbol, string.Empty).Replace("%", string.Empty).Trim();
|
||||
decimal percentageValue;
|
||||
if (decimal.TryParse(numericText, NumberStyles.Any, CultureInfo.CurrentCulture, out percentageValue) ||
|
||||
decimal.TryParse(numericText, NumberStyles.Any, CultureInfo.InvariantCulture, out percentageValue))
|
||||
{
|
||||
return percentageValue / 100m;
|
||||
}
|
||||
|
||||
return summaryValue;
|
||||
}
|
||||
/// <summary>
|
||||
/// DataTable转换成Excel文档流(导出数据量超出65535条,分sheet)
|
||||
/// </summary>
|
||||
@@ -105,10 +160,12 @@ namespace Lskj.Control
|
||||
/// <returns>GridControl.</returns>
|
||||
public BandedGridControlEx ReplaceBitColumn(BandedGridControlEx bandGridControlEx, bool IsCustomColumn = false)
|
||||
{
|
||||
_exportCustomSummaryValues.Clear();
|
||||
bool hasBoolean = false;
|
||||
BandedGridView gridView = bandGridControlEx.GridView as BandedGridView;
|
||||
BandedGridControlEx NewBandedGridControlEx = new BandedGridControlEx();
|
||||
BandedGridView gridView2 = NewBandedGridControlEx.GridView as BandedGridView;
|
||||
gridView2.CustomSummaryCalculate += OnExportCustomSummaryCalculate;
|
||||
gridView2.Columns.Clear();//默认有2个列
|
||||
List<string> boolList = new List<string>();
|
||||
List<string> datetimeList = new List<string>();
|
||||
@@ -164,6 +221,8 @@ namespace Lskj.Control
|
||||
newCol.Width = col.Width;
|
||||
newCol.OptionsColumn.AllowEdit = col.OptionsColumn.AllowEdit;
|
||||
newCol.ColumnEdit = boolList.Contains(col.FieldName) || datetimeList.Contains(col.FieldName) ? null : col.ColumnEdit;
|
||||
newCol.DisplayFormat.FormatType = col.DisplayFormat.FormatType;
|
||||
newCol.DisplayFormat.FormatString = col.DisplayFormat.FormatString;
|
||||
|
||||
//多表头默认都有1级标题(默认有空白表头)
|
||||
if (col.OwnerBand != null)
|
||||
@@ -377,6 +436,7 @@ namespace Lskj.Control
|
||||
//底部汇总是否导出
|
||||
if (SystemInfo.Instance.ExportSummary)
|
||||
{
|
||||
gridView.UpdateTotalSummary();
|
||||
for (int i = 1; i < gridView2.Columns.Count; i++)
|
||||
{
|
||||
string columnName = gridView2.Columns[i].FieldName;
|
||||
@@ -384,6 +444,11 @@ namespace Lskj.Control
|
||||
GridSummaryItem gsi = gridView.Columns[columnName].SummaryItem;
|
||||
if (gsi.SummaryType != DevExpress.Data.SummaryItemType.None) //gsi.SummaryValue!=null&& !string.IsNullOrEmpty(gsi.SummaryValue.ToString())
|
||||
{
|
||||
if (gsi.SummaryType == DevExpress.Data.SummaryItemType.Custom)
|
||||
{
|
||||
_exportCustomSummaryValues[columnName] = GetExportSummaryValue(gridView.Columns[columnName], gsi);
|
||||
}
|
||||
|
||||
gridView2.Columns[i].Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(gsi.SummaryType, gridView2.Columns[i].FieldName.ToString(), gsi.DisplayFormat) });
|
||||
|
||||
if (SystemInfo.Instance.GroupSpecialMode)
|
||||
@@ -422,6 +487,7 @@ namespace Lskj.Control
|
||||
public GridControl ReplaceBitColumn(GridControl control, bool IsCustomColumn = false)
|
||||
{
|
||||
GridView gridView = control.FocusedView as GridView;
|
||||
_exportCustomSummaryValues.Clear();
|
||||
bool hasBoolean = false;
|
||||
List<string> boolList = new List<string>();
|
||||
List<string> datetimeList = new List<string>();
|
||||
@@ -481,6 +547,8 @@ namespace Lskj.Control
|
||||
newCol.Width = 100;
|
||||
newCol.OptionsColumn.AllowEdit = col.OptionsColumn.AllowEdit;
|
||||
newCol.ColumnEdit = boolList.Contains(col.FieldName) || datetimeList.Contains(col.FieldName) ? null : col.ColumnEdit;
|
||||
newCol.DisplayFormat.FormatType = col.DisplayFormat.FormatType;
|
||||
newCol.DisplayFormat.FormatString = col.DisplayFormat.FormatString;
|
||||
this.gridView1.Columns.Add(newCol);
|
||||
visibleList.Add(col.FieldName);
|
||||
if (gridModel != null && !dictionary.ContainsKey(col.FieldName))
|
||||
@@ -733,7 +801,9 @@ namespace Lskj.Control
|
||||
if (firstColumn != null)
|
||||
{
|
||||
this.gridView1.OptionsView.ShowFooter = true;
|
||||
firstColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Count, firstColumn.FieldName.ToString(), "合计: {0:#,###}行") });
|
||||
string firstFieldName = firstColumn.FieldName.ToString();
|
||||
_exportCustomSummaryValues[firstFieldName] = string.Format("合计: {0}行", dtTable.Rows.Count);
|
||||
firstColumn.Summary.AddRange(new DevExpress.XtraGrid.GridSummaryItem[] { new DevExpress.XtraGrid.GridColumnSummaryItem(DevExpress.Data.SummaryItemType.Custom, firstFieldName, "{0}") });
|
||||
|
||||
if (SystemInfo.Instance.GroupSpecialMode)
|
||||
{
|
||||
@@ -748,6 +818,7 @@ namespace Lskj.Control
|
||||
//底部汇总是否导出
|
||||
if (SystemInfo.Instance.ExportSummary)
|
||||
{
|
||||
gridView.UpdateTotalSummary();
|
||||
for (int i = 1; i < this.gridView1.Columns.Count; i++)
|
||||
{
|
||||
string columnName = this.gridView1.Columns[i].FieldName;
|
||||
@@ -755,6 +826,11 @@ namespace Lskj.Control
|
||||
|
||||
if (gsi.SummaryType != DevExpress.Data.SummaryItemType.None) //gsi.SummaryValue!=null&& !string.IsNullOrEmpty(gsi.SummaryValue.ToString())
|
||||
{
|
||||
if (gsi.SummaryType == DevExpress.Data.SummaryItemType.Custom)
|
||||
{
|
||||
_exportCustomSummaryValues[columnName] = GetExportSummaryValue(gridView.Columns[columnName], gsi);
|
||||
}
|
||||
|
||||
string originalFormat = gsi.DisplayFormat;
|
||||
// 匹配 {0:#.##}、{0:0.##} 等格式 避免出现没有小数但是还有小数点的情况,如 0.
|
||||
try
|
||||
@@ -763,7 +839,7 @@ namespace Lskj.Control
|
||||
if (match.Success)
|
||||
{
|
||||
string innerFormat = match.Groups[1].Value;
|
||||
if (innerFormat.Contains("."))
|
||||
if (innerFormat.Contains(".") && innerFormat.Split(';').Length == 1)
|
||||
{
|
||||
// 生成条件格式:正数;负数;零(整数无小数点)
|
||||
string newInnerFormat = $"{innerFormat};{innerFormat};{innerFormat.Split('.')[0]}";
|
||||
|
||||
Reference in New Issue
Block a user