SVN r452
SVN-Revision: r452
This commit is contained in:
@@ -42,11 +42,14 @@ using DevExpress.XtraEditors.Controls;
|
||||
|
||||
namespace Lskj.Control
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 多表头表格
|
||||
/// </summary>
|
||||
public partial class BandedGridControlEx : GridControlEx
|
||||
{
|
||||
// 创建Dictionary存储行号为Key,有效日期格式列名数组为Value
|
||||
public Dictionary<int, List<DateTime>> rowDateValues = new Dictionary<int, List<DateTime>>();
|
||||
/// <summary>
|
||||
/// 获取模块配置
|
||||
/// </summary>
|
||||
@@ -264,7 +267,7 @@ namespace Lskj.Control
|
||||
public void OnGridViewRowCellStyle(object sender, RowCellStyleEventArgs e)
|
||||
{
|
||||
var view = sender as DevExpress.XtraGrid.Views.Grid.GridView;
|
||||
|
||||
bool isLaterDatePresent = false;
|
||||
if (view.IsCellSelected(e.RowHandle, e.Column))
|
||||
{
|
||||
return; // 如果当前单元格被选中,则不应用自定义样式
|
||||
@@ -275,11 +278,22 @@ namespace Lskj.Control
|
||||
DataRow gridRow = view.GetDataRow(e.RowHandle);
|
||||
// 获取行的最大日期值
|
||||
DateTime? maxDateForRow = null;
|
||||
if (gridRow.Table.Columns.Contains("PrecomputedMaxDate") && gridRow["PrecomputedMaxDate"] != null && gridRow["PrecomputedMaxDate"].ToString() != "")
|
||||
if (gridRow.Table.Columns.Contains("PrecomputedMaxDate"))
|
||||
{
|
||||
if (DateTime.TryParse(gridRow["PrecomputedMaxDate"].ToString(), out DateTime parsedDate))
|
||||
bool isFieldDate= DateTime.TryParse(e.Column.FieldName, out DateTime FieldDate);
|
||||
bool isMaxDate = DateTime.TryParse(gridRow["PrecomputedMaxDate"].ToString(), out DateTime parsedDate);
|
||||
if (isMaxDate && isFieldDate)
|
||||
{
|
||||
maxDateForRow = parsedDate;
|
||||
|
||||
if (FieldDate< parsedDate)
|
||||
{
|
||||
isLaterDatePresent = true;
|
||||
}
|
||||
}
|
||||
else if(isFieldDate)
|
||||
{
|
||||
return; // 如果当前是日期框模式且没有定义最大值则直接跳过
|
||||
}
|
||||
}
|
||||
//DateTime? maxDateForRow = GetMaxDateFromColumnNames(gridRow);
|
||||
@@ -299,14 +313,6 @@ namespace Lskj.Control
|
||||
{
|
||||
cond = ReplaceHelper.ReplaceRowParam(gridRow, item["condition"] + "").ReplaceColumnParam(e.Column.Name, e.Column.Caption, e.CellValue + "");
|
||||
}
|
||||
bool isLaterDatePresent = false;
|
||||
// 检查当前列是否为日期类型并获取日期
|
||||
DateTime currentDate;
|
||||
if (IsDateColumn(e.Column.FieldName, out currentDate) && maxDateForRow.HasValue && currentDate < maxDateForRow.Value)
|
||||
{
|
||||
// 如果当前日期小于行的最大日期,则跳过当前迭代
|
||||
isLaterDatePresent = true;
|
||||
}
|
||||
try
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(cond) && ReplaceHelper.EvalCond(cond) && (!string.IsNullOrEmpty(e.CellValue + "")|| isLaterDatePresent))
|
||||
@@ -1368,22 +1374,39 @@ namespace Lskj.Control
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
GridView gridView = this.gridControl.MainView as GridView;
|
||||
DataTable dataTable = this.gridControl.DataSourceTable();
|
||||
if (dataTable != null&& dataTable.Columns.Contains("PrecomputedMaxDate"))
|
||||
if (dataTable != null&&dataTable.Columns.Contains("PrecomputedMaxDate"))
|
||||
{
|
||||
DataRow HandleRow = this.bandedGridView.GetDataRow(e.RowHandle);
|
||||
DateTime? maxDate = null; // 初始化为 null,表示尚未找到有效日期
|
||||
if (DateTime.TryParse(e.Column.FieldName, out DateTime tempDate) && DateTime.TryParse(HandleRow["PrecomputedMaxDate"] + "", out DateTime newDate))
|
||||
bool isdatefile= DateTime.TryParse(e.Column.FieldName, out DateTime tempDate);//获取改变当前列日期
|
||||
bool isMaxDatefile = rowDateValues.TryGetValue(e.RowHandle, out List<DateTime> currentRowDateColumns);//获取记录日期
|
||||
if (isdatefile)
|
||||
{
|
||||
if (tempDate > maxDate) // 只有在找到更大的日期时才更新
|
||||
if (isMaxDatefile&& currentRowDateColumns.Count>0)
|
||||
{
|
||||
HandleRow["PrecomputedMaxDate"] = tempDate;
|
||||
List<DateTime> validDateColumns= rowDateValues[e.RowHandle];
|
||||
if (tempDate > currentRowDateColumns.Max()) // 只有在找到更大的日期时才更新
|
||||
{
|
||||
validDateColumns.Add(tempDate);
|
||||
HandleRow["PrecomputedMaxDate"] = tempDate.ToString("yyyy-MM-dd");
|
||||
}
|
||||
else if (tempDate == currentRowDateColumns.Max() && string.IsNullOrEmpty(e.Value + ""))
|
||||
{
|
||||
rowDateValues[e.RowHandle].Remove(tempDate);
|
||||
HandleRow["PrecomputedMaxDate"] = currentRowDateColumns.Max().ToString("yyyy-MM-dd");
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!validDateColumns.Contains(tempDate)) validDateColumns.Add(tempDate);
|
||||
}
|
||||
}
|
||||
else {
|
||||
rowDateValues[e.RowHandle].Add(tempDate);
|
||||
HandleRow["PrecomputedMaxDate"] = tempDate.ToString("yyyy-MM-dd");
|
||||
}
|
||||
} else if (string.IsNullOrEmpty(HandleRow["PrecomputedMaxDate"]+""))
|
||||
{
|
||||
|
||||
HandleRow["PrecomputedMaxDate"] = tempDate;
|
||||
}
|
||||
}
|
||||
if (e.Column.Tag == null) return;
|
||||
|
||||
Reference in New Issue
Block a user