#region
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.Drawing;
|
using System.Windows.Forms;
|
using CSFrameworkV5.Business;
|
using CSFrameworkV5.Common;
|
using CSFrameworkV5.Core;
|
using CSFrameworkV5.Language;
|
using CSFrameworkV5.Library.CommonClass;
|
using DevExpress.XtraGrid.Views.Grid;
|
|
#endregion
|
|
namespace CSFrameworkV5.Library
|
{
|
/// <summary>
|
/// 数据字典窗体基类
|
/// </summary>
|
public partial class frmBaseDataDictionary : frmBaseDataForm
|
{
|
/// <summary>
|
/// 数据字典业务逻辑
|
/// </summary>
|
protected bllBaseDataDict _BLL = new bllNullObjectDataDict(); //临时实例
|
|
public frmBaseDataDictionary()
|
{
|
InitializeComponent();
|
}
|
|
public override bool ButtonAuthorized(int authorityValue)
|
{
|
//本窗体隐藏指定按钮
|
//if (authorityValue == ButtonAuthority.PRINT) //数据字典隐藏打印按钮
|
// return false;
|
return base.ButtonAuthorized(authorityValue);
|
}
|
|
protected override void ButtonStateChanged(UpdateType currentState)
|
{
|
base.ButtonStateChanged(currentState);
|
SetDetailEditorsAccessable(_DetailGroupControl, DataChanged);
|
|
//仅新增状态可修改主键输入框
|
if (_KeyEditor != null)
|
_KeyEditor.Enabled = UpdateType.Add == currentState;
|
}
|
|
/// <summary>
|
/// 新增记录
|
/// </summary>
|
public override void DoAdd(IButtonInfo sender)
|
{
|
try
|
{
|
frmWaitingEx.ShowMe(this);
|
_BLL.CreateDataBinder(null);
|
DoBindingSummaryEditor(_BLL.DataBinder); //绑定数据输入控件
|
base.DoAdd(sender);
|
ShowDetailPage(true);
|
}
|
finally
|
{
|
frmWaitingEx.HideMe(this);
|
}
|
}
|
|
protected virtual void DoAfterDelete(string primaryKey)
|
{
|
DataDictCache.Cache.SyncDeleteCacheRow(_BLL.SummaryTableName,
|
_BLL.KeyFieldName, primaryKey);
|
DataDictObservers.Notify(_BLL.SummaryTableName);
|
}
|
|
/// <summary>
|
/// 提交数据成功后处理的扩展方法
|
/// </summary>
|
/// <param name="dataTable"></param>
|
protected virtual void DoAfterSave(DataTable dataTable)
|
{
|
DataDictCache.Cache.SyncAddOrUpdateCache(dataTable.Rows[0],
|
_UpdateType, _BLL.SummaryTableName,
|
_BLL.KeyFieldName); //同步更新缓存数据
|
|
DataDictObservers.Notify(dataTable.TableName);
|
}
|
|
public virtual bool DoBeforeDelete(ref string keyValue)
|
{
|
AssertFocusedRow(); //检查是否选择一条记录
|
|
//调用业务逻辑类删除记录
|
var summary =
|
_SummaryView.GetDataRow(_SummaryView.FocusedRowHandle);
|
keyValue = summary[_BLL.KeyFieldName].ToStringEx(); //主键值
|
|
return Msg.AskQuestion("确定要删除主键为 " + keyValue + " 的资料?");
|
}
|
|
/// <summary>
|
/// 虚方法,用于绑定当前记录的数据到输入框
|
/// </summary>
|
/// <param name="dataBinder">数据源</param>
|
protected virtual void DoBindingSummaryEditor(DataTable dataBinder)
|
{
|
}
|
|
public override void DoCancel(IButtonInfo sender)
|
{
|
if (Msg.AskQuestion("要取消修改吗?")) base.DoCancel(sender);
|
}
|
|
/// <summary>
|
/// 删除记录
|
/// </summary>
|
/// <param name="sender"></param>
|
public override void DoDelete(IButtonInfo sender)
|
{
|
try
|
{
|
frmWaitingEx.ShowMe(this);
|
|
var keyValue = "";
|
if (false == DoBeforeDelete(ref keyValue)) return;
|
|
var b = _BLL.Delete(keyValue);
|
AssertEqual(b, true, "删除记录时发生错误!");
|
|
DeleteSummaryRow(_SummaryView.FocusedRowHandle); //删除Summary资料行
|
|
if (_SummaryView.FocusedRowHandle < 0) //删除了最後一条记录. 显示Summary页面.
|
{
|
ShowSummaryPage(true);
|
}
|
else
|
{
|
_BLL.CreateDataBinder(
|
_SummaryView.GetDataRow(_SummaryView.FocusedRowHandle));
|
DoBindingSummaryEditor(_BLL
|
.DataBinder); //显示主表记录详细资料
|
}
|
|
//最后处理自定义方法
|
DoAfterDelete(keyValue);
|
}
|
finally
|
{
|
frmWaitingEx.HideMe(this);
|
}
|
}
|
|
public override void DoEdit(IButtonInfo sender)
|
{
|
AssertFocusedRow();
|
base.DoEdit(sender);
|
DoViewContent(sender);
|
ShowDetailPage(true);
|
}
|
|
public virtual void DoExportDOC(IButtonInfo sender)
|
{
|
if (_SummaryView != null)
|
{
|
var dlg = new SaveFileDialog();
|
dlg.Filter = "Microsoft Office File(*.doc)|*.doc";
|
if (dlg.ShowDialog() == DialogResult.OK)
|
{
|
_SummaryView.ExportData("DOC", dlg.FileName);
|
Msg.ShowInformation("导出文件成功!\r\n" + dlg.FileName);
|
}
|
}
|
}
|
|
public virtual void DoExportPDF(IButtonInfo sender)
|
{
|
if (_SummaryView != null)
|
{
|
var dlg = new SaveFileDialog();
|
dlg.Filter = "Adobe Acrobat(*.pdf)|*.pdf";
|
if (dlg.ShowDialog() == DialogResult.OK)
|
{
|
_SummaryView.ExportData("PDF", dlg.FileName);
|
Msg.ShowInformation("导出文件成功!\r\n" + dlg.FileName);
|
}
|
}
|
}
|
|
public virtual void DoExportXLS(IButtonInfo sender)
|
{
|
if (_SummaryView != null)
|
{
|
var dlg = new SaveFileDialog();
|
dlg.Filter = "Microsoft Excel File(*.xls)|*.xls";
|
if (dlg.ShowDialog() == DialogResult.OK)
|
{
|
_SummaryView.ExportData("XLS", dlg.FileName);
|
Msg.ShowInformation("导出文件成功!\r\n" + dlg.FileName);
|
}
|
}
|
}
|
|
public virtual void DoRefreshData(IButtonInfo sender)
|
{
|
if (tcBusiness.SelectedTabPage == tpSummary)
|
ShowSummary();
|
else
|
Msg.Warning("数据编辑页禁止刷新数据!");
|
}
|
|
/// <summary>
|
/// 标准的保存方法
|
/// </summary>
|
/// <param name="sender"></param>
|
public override void DoSave(IButtonInfo sender)
|
{
|
try
|
{
|
frmWaitingEx.ShowMe(this);
|
|
UpdateLastControl(); //更新最后一个输入控件的数据
|
|
if (!ValidatingData()) return; //检查输入完整性
|
|
var ret = _BLL.Update(); //调用业务逻辑层的Update方法提交数据
|
if (ret)
|
{
|
DoAfterSave(_BLL.DataBinder);
|
|
//只有修改状态生成日志
|
//if (_UpdateType == UpdateType.Modify) _BLL.WriteLog(original, _BLL.DataBinder); //保存修改日志
|
|
var key =
|
ConvertEx.ToString(
|
_BLL.DataBinder.Rows[0][_BLL.KeyFieldName]);
|
var dt = _BLL.GetDataByKey(key); //保存后查询数据
|
if (dt.Rows.Count > 0)
|
{
|
UpdateSummaryRow(
|
dt.Rows[
|
0]); //刷新表格内的数据.
|
DoSave_ResetState();
|
}
|
else
|
{
|
Msg.Warning(
|
"当前记录已被其它用户删除,刷新数据失败!\r\n程序:frmBaseDataDictionary.DoSave()");
|
}
|
}
|
else
|
{
|
Msg.Warning("保存失败!");
|
}
|
}
|
finally
|
{
|
frmWaitingEx.HideMe(this);
|
}
|
}
|
|
/// <summary>
|
/// 扩展后的保存方法
|
/// </summary>
|
/// <param name="sender"></param>
|
public virtual void DoSaveEx(IButtonInfo sender)
|
{
|
try
|
{
|
frmWaitingEx.ShowMe(this);
|
|
UpdateLastControl(); //更新最后一个输入控件的数据
|
|
if (!ValidatingData()) return; //检查输入完整性
|
|
var ret = _BLL.UpdateEx(); //调用业务逻辑层的Update方法提交数据
|
if (ret.Success)
|
{
|
DoAfterSave(_BLL.DataBinder);
|
|
var dt = _BLL.GetDataByKey(ret.PrimaryKey); //保存后查询数据
|
if (dt.Rows.Count > 0)
|
{
|
DoBindingSummaryEditor(dt); //生产绑定数据源
|
UpdateSummaryRow(
|
dt.Rows[
|
0]); //刷新表格内的数据.
|
DoSave_ResetState();
|
}
|
else
|
{
|
Msg.Warning(
|
"当前记录已被其它用户删除,刷新数据失败!\r\n程序:frmBaseDataDictionary.DoSave()");
|
}
|
}
|
else
|
{
|
Msg.Warning("保存失败!");
|
}
|
}
|
finally
|
{
|
frmWaitingEx.HideMe(this);
|
}
|
}
|
|
/// <summary>
|
/// 查看单据的修改历史记录
|
/// </summary>
|
/// <param name="button"></param>
|
public virtual void DoShowModifyHistory(IButtonInfo button)
|
{
|
AssertFocusedRow();
|
var form = MdiTools.OpenChildForm(MdiParent as IMdiForm,
|
typeof(frmLogEditHistory), false);
|
if (form != null)
|
{
|
var keyValue = "";
|
if (tcBusiness.SelectedTabPageIndex == 0) //数据查看
|
keyValue =
|
_SummaryView.GetDataRow(_SummaryView.FocusedRowHandle)[
|
_BLL.KeyFieldName].ToStringEx();
|
else //数据编辑
|
keyValue = _BLL.DataBinder != null
|
? _BLL.DataBinderRow[_BLL.KeyFieldName].ToStringEx()
|
: "";
|
|
(form as frmLogEditHistory).ShowData(_BLL.SummaryTableName,
|
keyValue, DateTime.Today);
|
}
|
}
|
|
/// <summary>
|
/// 用户在Summary页选择一条记录. 显示当前记录的详细资料
|
/// </summary>
|
/// <param name="sender"></param>
|
public override void DoViewContent(IButtonInfo sender)
|
{
|
AssertFocusedRow(); //检查有无记录.
|
try
|
{
|
frmWaitingEx.ShowMe(this);
|
_BLL.CreateDataBinder(
|
_SummaryView.GetDataRow(_SummaryView.FocusedRowHandle));
|
base.DoViewContent(sender);
|
DoBindingSummaryEditor(_BLL.DataBinder); //绑定数据输入控件
|
ShowDetailPage(false); //用户点击ViewContent按钮可以显示Summary页
|
}
|
finally
|
{
|
frmWaitingEx.HideMe(this);
|
}
|
}
|
|
public override void InitButtons()
|
{
|
base.InitButtons();
|
|
IList list = new ArrayList();
|
|
//刷新数据
|
list.Add(ToolbarRegister.CreateButton("btnRefreshDataDict",
|
LanLib.Get("刷新数据"), ToolBarGroup.数据操作,
|
Globals.LoadBitmap("32_Refresh.png"), new Size(57, 28), true,
|
true, DoRefreshData));
|
|
//导出字典
|
if (ButtonAuthorized(ButtonAuthority.EXPORT))
|
{
|
//导出字典按钮的3个下拉按钮
|
var subItems = new List<IButtonInfo>();
|
subItems.Add(ToolbarRegister.CreateButton("btnExportXLS",
|
LanLib.Get("导出XLS文件"), ToolBarGroup.数据操作,
|
Globals.LoadBitmap("32_ExportXlsLarge.png"),
|
new Size(57, 28), false, true, DoExportXLS));
|
subItems.Add(ToolbarRegister.CreateButton("btnExportDoc",
|
LanLib.Get("导出DOC文件"), ToolBarGroup.数据操作,
|
Globals.LoadBitmap("32_ExportDocLarge.png"),
|
new Size(57, 28), false, true, DoExportDOC));
|
subItems.Add(ToolbarRegister.CreateButton("btnExportPDF",
|
LanLib.Get("导出PDF文件"), ToolBarGroup.数据操作,
|
Globals.LoadBitmap("32_ExportPdfLarge.png"),
|
new Size(57, 28), false, true, DoExportPDF));
|
|
list.Add(ToolbarRegister.CreateListButton("btnExportDataDict",
|
LanLib.Get("导出字典"), ToolBarGroup.数据操作,
|
Globals.LoadBitmap("32_Export.png"), new Size(57, 28), true,
|
true, null, subItems));
|
}
|
|
//查看日志
|
if (ButtonAuthorized(ButtonAuthority.SHOW_MOD_HISTORY))
|
list.Add(ToolbarRegister.CreateButton("btnShowModifyHistory",
|
LanLib.Get("查看日志"), ToolBarGroup.扩展功能1,
|
Globals.LoadBitmap("32_EditLog.png"), new Size(57, 28),
|
true, true, DoShowModifyHistory));
|
|
_buttons.AddRange(list);
|
}
|
|
/// <summary>
|
/// 初始化操作
|
/// </summary>
|
protected override void InitializeForm()
|
{
|
if (_SummaryView != null && _SummaryView.View is GridView)
|
{
|
var gridView = _SummaryView.View as GridView;
|
frmGridCustomize.RegisterGrid(gridView); //注册表格配置功能
|
DevStyle.SetGridControlLayout(gridView.GridControl,
|
false); //设置表格样式
|
DevStyle.SetSummaryGridViewLayout(gridView);
|
BindingSummaryNavigator(controlNavigatorSummary,
|
gridView.GridControl); //Summary导航条.
|
}
|
|
_SummaryView.BindingDoubleClick(
|
OnGridViewDoubleClick); //主表DoubleClict
|
|
ShowSummary(); //下载显示数据.
|
ShowSummaryPage(true); //一切初始化完毕後显示SummaryPage
|
|
base.InitializeForm();
|
}
|
|
protected override void SetEditMode()
|
{
|
base.SetEditMode();
|
|
_buttons.GetButtonByName("btnRefreshDataDict").Enable = false;
|
_buttons.GetButtonByName("btnExportDataDict").Enable = false;
|
_buttons.GetButtonByName("btnShowModifyHistory").Enable = false;
|
}
|
|
public override void SetLanguage()
|
{
|
base.SetLanguage();
|
|
Buttons.GetButtonByName("btnRefreshDataDict").Caption =
|
LanLib.Get("刷新数据");
|
Buttons.GetButtonByName("btnExportDataDict").Caption =
|
LanLib.Get("导出字典");
|
|
Buttons.GetButtonByName("btnExportXLS").Caption =
|
LanLib.Get("导出XLS文件");
|
Buttons.GetButtonByName("btnExportPDF").Caption =
|
LanLib.Get("导出PDF文件");
|
}
|
|
protected override void SetViewMode()
|
{
|
base.SetViewMode();
|
|
_buttons.GetButtonByName("btnRefreshDataDict").Enable = true;
|
_buttons.GetButtonByName("btnExportDataDict").Enable =
|
ButtonAuthorized(ButtonAuthority.EXPORT);
|
_buttons.GetButtonByName("btnShowModifyHistory").Enable =
|
ButtonAuthorized(ButtonAuthority.SHOW_MOD_HISTORY);
|
}
|
|
/// <summary>
|
/// 显示数据字典, 一次性全部下载。
|
/// </summary>
|
protected virtual void ShowSummary()
|
{
|
_BLL.GetSummaryData(true); //调用业务逻辑类的GetSummaryData()方法获取数据
|
DoBindingSummaryGrid(_BLL.SummaryTable); //绑定主表的Grid
|
ShowSummaryPage(true); //显示Summary页面.
|
}
|
|
/// <summary>
|
/// 检查输入完整性
|
/// </summary>
|
/// <returns></returns>
|
protected virtual bool ValidatingData()
|
{
|
return true;
|
}
|
}
|
}
|