#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
{
///
/// 数据字典窗体基类
///
public partial class frmBaseDataDictionary : frmBaseDataForm
{
///
/// 数据字典业务逻辑
///
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;
}
///
/// 新增记录
///
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);
}
///
/// 提交数据成功后处理的扩展方法
///
///
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 + " 的资料?");
}
///
/// 虚方法,用于绑定当前记录的数据到输入框
///
/// 数据源
protected virtual void DoBindingSummaryEditor(DataTable dataBinder)
{
}
public override void DoCancel(IButtonInfo sender)
{
if (Msg.AskQuestion("要取消修改吗?")) base.DoCancel(sender);
}
///
/// 删除记录
///
///
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("数据编辑页禁止刷新数据!");
}
///
/// 标准的保存方法
///
///
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);
}
}
///
/// 扩展后的保存方法
///
///
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);
}
}
///
/// 查看单据的修改历史记录
///
///
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页选择一条记录. 显示当前记录的详细资料
///
///
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();
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);
}
///
/// 初始化操作
///
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);
}
///
/// 显示数据字典, 一次性全部下载。
///
protected virtual void ShowSummary()
{
_BLL.GetSummaryData(true); //调用业务逻辑类的GetSummaryData()方法获取数据
DoBindingSummaryGrid(_BLL.SummaryTable); //绑定主表的Grid
ShowSummaryPage(true); //显示Summary页面.
}
///
/// 检查输入完整性
///
///
protected virtual bool ValidatingData()
{
return true;
}
}
}