#region
using System.Data;
using System.Drawing;
using CSFrameworkV5.Business;
using CSFrameworkV5.Common;
using CSFrameworkV5.Core;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Views.Grid;
#endregion
namespace CSFrameworkV5.Library
{
///
/// 表格编辑基类窗体
///
public partial class frmBaseGridEditForm : frmBaseChild, IPrintableForm
{
///
/// 数据字典业务逻辑
///
protected bllBaseDataDict
_BLL = new bllNullObjectDataDict(); //临时实例
protected ISummaryView _SummaryView;
public frmBaseGridEditForm()
{
InitializeComponent();
}
public virtual void DoCancel(IButtonInfo sender)
{
if (Msg.AskQuestion("确定要取消修改吗?"))
{
var dt = _SummaryView.DataSource as DataTable;
dt.RejectChanges();
_SummaryView.RefreshDataSource();
}
}
///
/// 保存数据
///
///
public virtual void DoSave(IButtonInfo sender)
{
_FocusEditor.Focus(); //跳动焦点,使当前单元格的值写入数据源
if (_SummaryView.RowCount == 0)
{
Msg.Warning("没有数据!");
}
else
{
if (!ValidatingData()) return;
try
{
frmWaitingEx.ShowMe(this);
var dt = _SummaryView.DataSource as DataTable;
var changes = dt.GetChanges();
if (changes != null)
{
if (changes.Rows.Count > 0) _BLL.Update(changes);
dt.AcceptChanges();
_SummaryView.RefreshDataSource();
Msg.ShowInformation("保存成功!");
}
else
{
Msg.Warning("您没有修改数据!");
}
}
finally
{
frmWaitingEx.HideMe(this);
}
}
}
///
/// 初始化数据窗体的按钮
///
public override void InitButtons()
{
base.InitButtons();
Buttons.AddRange(GetPrintableButtons());
var b = new IButtonInfo[2];
b[0] = ToolbarRegister.CreateButton(ButtonNameList.btnSave, "保存",
ToolBarGroup.数据操作,
Globals.LoadBitmap("32_Save.png"), new Size(57, 28), true, true,
DoSave);
b[1] = ToolbarRegister.CreateButton(ButtonNameList.btnCancel,
"取消修改", ToolBarGroup.数据操作,
Globals.LoadBitmap("32_Cancel.png"), new Size(57, 28), true,
true, DoCancel);
Buttons.AddRange(b);
}
///
/// 检查输入完整性
///
///
protected virtual bool ValidatingData()
{
return true;
}
#region IPrintableForm 成员
///
/// 打印操作按钮
///
///
public IButtonInfo[] GetPrintableButtons()
{
var b = new IButtonInfo[1];
if (ButtonAuthorized(ButtonAuthority.PRINT))
b[0] = ToolbarRegister.CreateButton(ButtonNameList.btnPrint,
"预览", ToolBarGroup.打印功能,
Globals.LoadBitmap("32_Print.png"), new Size(57, 28), true,
true, DoPrint);
return b;
}
///
/// 打印报表
///
///
public virtual void DoPrint(IButtonInfo button)
{
}
#endregion
#region 控制表格主键列不能修改,新增的记录可以修改
///
/// 控制表格主键列不能修改,新增的记录可以修改
///
///
protected virtual void HandlePKColumn(GridView view)
{
view.FocusedColumnChanged += OnView_FocusedColumnChanged;
view.FocusedRowChanged += OnView_FocusedRowChanged;
view.RowCellStyle += OnView_RowCellStyle;
}
private void OnView_FocusedColumnChanged(object sender,
FocusedColumnChangedEventArgs e)
{
var view = sender as GridView;
view.OptionsBehavior.Editable = true;
if (e.FocusedColumn == view.Columns[_BLL.KeyFieldName])
{
var R = view.GetFocusedDataRow();
if (R != null)
//不支持在表格内修改已保存记录主键的值,新增的记录可以修改
view.OptionsBehavior.Editable =
R.RowState == DataRowState.Detached ||
R.RowState == DataRowState.Added;
}
}
private void OnView_FocusedRowChanged(object sender,
FocusedRowChangedEventArgs e)
{
var view = sender as GridView;
view.OptionsBehavior.Editable = true;
if (view.FocusedColumn == view.Columns[_BLL.KeyFieldName])
{
var R = view.GetFocusedDataRow();
if (R != null)
//不支持在表格内修改已保存记录主键的值,新增的记录可以修改
view.OptionsBehavior.Editable =
R.RowState == DataRowState.Detached ||
R.RowState == DataRowState.Added;
}
}
private void OnView_RowCellStyle(object sender, RowCellStyleEventArgs e)
{
//设置背景色
if (e.Column == (sender as GridView).Columns[_BLL.KeyFieldName])
{
var R = (sender as GridView).GetFocusedDataRow();
if (R.RowState == DataRowState.Detached ||
R.RowState == DataRowState.Added)
e.Appearance.BackColor = Color.Gainsboro;
else
e.Appearance.BackColor = Color.Gainsboro;
}
}
#endregion
}
}