#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
|
{
|
/// <summary>
|
/// 表格编辑基类窗体
|
/// </summary>
|
public partial class frmBaseGridEditForm : frmBaseChild, IPrintableForm
|
{
|
/// <summary>
|
/// 数据字典业务逻辑
|
/// </summary>
|
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();
|
}
|
}
|
|
/// <summary>
|
/// 保存数据
|
/// </summary>
|
/// <param name="sender"></param>
|
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);
|
}
|
}
|
}
|
|
/// <summary>
|
/// 初始化数据窗体的按钮
|
/// </summary>
|
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);
|
}
|
|
/// <summary>
|
/// 检查输入完整性
|
/// </summary>
|
/// <returns></returns>
|
protected virtual bool ValidatingData()
|
{
|
return true;
|
}
|
|
#region IPrintableForm 成员
|
|
/// <summary>
|
/// 打印操作按钮
|
/// </summary>
|
/// <returns></returns>
|
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;
|
}
|
|
/// <summary>
|
/// 打印报表
|
/// </summary>
|
/// <param name="button"></param>
|
public virtual void DoPrint(IButtonInfo button)
|
{
|
}
|
|
#endregion
|
|
#region 控制表格主键列不能修改,新增的记录可以修改
|
|
/// <summary>
|
/// 控制表格主键列不能修改,新增的记录可以修改
|
/// </summary>
|
/// <param name="view"></param>
|
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
|
}
|
}
|