/*===================================================================
* 程序说明: yhj_womdaa的数据管理窗体
* 作者资料: 孙中吕
* 创建日期: 2024/07/19 02:11:40
* 最后修改: 2024/07/19 02:11:40
*
* 注: 本文件由代码生成器(Code Generator)自动生成。
* 版权所有 Copyright 2006~2024, C/S框架网(www.cscode.net)
*===================================================================*/
using System;
using System.ComponentModel;
using System.Data;
using System.Windows.Forms;
using CSFrameworkV5.Business;
using CSFrameworkV5.Common;
using CSFrameworkV5.Core;
using CSFrameworkV5.Interfaces;
using CSFrameworkV5.Library;
using CSFrameworkV5.Library.CommonClass;
using CSFrameworkV5.Models;
using DevExpress.XtraEditors;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Views.Grid;
namespace CSFrameworkV5.womcaa
{
///
/// yhj_womdaa的资料管理窗体,由代码生成器(Code Generator)自动生成
///
public partial class frmyhj_womdaa : frmBaseBusinessForm
{
private bllyhj_womdaa _BLLInstance;//业务逻辑层对象引用
public frmyhj_womdaa()
{
InitializeComponent();
}
private void frmyhj_womdaa_Load(object sender, EventArgs e)
{
this.InitializeForm();//自定义初始化操作
if(this.splitContainerEditorAndDetailGrid != null && this.layoutGroup.OptionsTableLayoutGroup.RowDefinitions.Count != 0){
this.splitContainerEditorAndDetailGrid.SplitterPosition = Convert.ToInt32(Math.Round(this.layoutGroup.OptionsTableLayoutGroup.RowDefinitions.Count * this.layoutGroup.OptionsTableLayoutGroup.RowDefinitions[0].Height, 0)) + 30; }
if(this.splitContainerSearchAndSummary != null && this.layoutGroupSearch.OptionsTableLayoutGroup.RowDefinitions.Count != 0){
this.splitContainerSearchAndSummary.SplitterPosition = Convert.ToInt32(Math.Round((this.layoutGroupSearch.OptionsTableLayoutGroup.RowDefinitions.Count - 1) * this.layoutGroupSearch.OptionsTableLayoutGroup.RowDefinitions[0].Height, 0)) + 60; }
}
protected override void InitializeForm()
{
_BLL = new bllyhj_womdaa(); //实例化基类的业务逻辑层
_BLLInstance = _BLL as bllyhj_womdaa; //当前窗体的业务层逻辑层对象引用
_SummaryView = new DevGridView(gvSummary);//实例化数据视图,此接口可支持不同的视图,比如表格GridControl,树视图TreeList.
//_ActiveEditor = txtid;//进入修改状态,显示第一个焦点的输入框,可以不设置
//_KeyEditor = txtid;//主键字段输入框,可以不设置
_DetailGroupControl = pcDetailEditor;//【资料编辑】页面所有文本输入框的容器
base.InitializeForm();
picNote.Image = Globals.LoadImage("32_Notes.png");
frmGridCustomize.RegisterGrid(gvSummary);//注册表格组件,自动添加样式管理、弹出菜单
DevStyle.SetGridControlLayout(gcSummary, false);//主表表格样式设置
DevStyle.SetSummaryGridViewLayout(gvSummary);//主表表格样式设置
BindingSummaryNavigator(controlNavigatorSummary, gcSummary); //绑定表格导航按钮的数据源.
gvSummary.DoubleClick += new EventHandler(OnGridViewDoubleClick); //绑定主表的DoubleClick事件
gvSummary.Click += new EventHandler(OnGridViewClick); //绑定主表的DoubleClick事件
DevStyle.SetGridControlLayout(this.gcDetail0, true);//明细表表格样式设置
DevStyle.SetDetailGridViewLayout(this.gvDetail0);//明细表表格样式设置
this.gcDetail0.EmbeddedNavigator.ButtonClick += new NavigatorButtonClickEventHandler(this.OnEmbeddedNavigatorButtonClick); //绑定明细表格的按钮事件
this.gvDetail0.CellValueChanged += new DevExpress.XtraGrid.Views.Base.CellValueChangedEventHandler(OnCellValueChanged); //绑定明细表格单元格数据修改时触发的事件
#region 以下代码全自动生成,请调整排版和顺序
#endregion
this.ShowSummaryPage(true); //初始化完成后显示表格页
}
#region 自动生成的事件或方法的主体部份
#endregion
//修改单元格数据时触发的事件
private void OnCellValueChanged(object sender, CellValueChangedEventArgs e)
{
//开发实例:修改单元格关联更新其它列的值
//参考(frmPO/frmSO).OnCellValueChanged方法}
}
///
/// 明细表格按钮事件
///
///
///
private void OnEmbeddedNavigatorButtonClick(object sender, NavigatorButtonClickEventArgs e)
{
try
{
GridControl gc = (GridControl)((GridControlNavigator)sender).Parent;
GridView gridView = (GridView)gc.Views[0]; //每个GridControl默认有一个GridView.
if (e.Button.ImageIndex == DetailButtons.Add || e.Button.ImageIndex == DetailButtons.Insert)
{
CreateOneDetail(gridView, e.Button.ImageIndex);
}
else if (e.Button == gc.EmbeddedNavigator.Buttons.CustomButtons[DetailButtons.Delete])
{
if (Msg.AskQuestion("确定要删除这条记录?"))
gridView.DeleteRow(gridView.FocusedRowHandle);
}
e.Handled = true;
}
catch (Exception ex)
{
LogUserOperate.Write(ex);
Msg.ShowException(ex);
}
}
///
/// 重要!!当按钮状态改变时触发的事件,
///
///
protected override void ButtonStateChanged(UpdateType currentState)
{
bool isEditMode = (currentState == UpdateType.Add) || (currentState == UpdateType.Modify);
//设置编辑页面的文本框控件只读和可编辑状态
this.SetDetailEditorsAccessable(pcDetailEditor, isEditMode);
//设置明细表格的按钮禁用和可用状态
base.SetGridCustomButtonAccessable(this.gcDetail0, isEditMode);
//设置明细表格的可修改状态
this.gvDetail0.OptionsBehavior.Editable = isEditMode;
//业务单据的主键都不支持修改
txtid.Enabled= false;
txtid.Properties.ReadOnly = true;
lbStateName.Text = this.UpdateTypeName;
}
//有明细表:绑定单据明细表的数据源.
protected override void DoBindingDetailGrid(DataSet dataSource)
{
this.gcDetail0.DataSource = null;
this.gcDetail0.DataSource = dataSource.Tables[yhj_womdab.__TableName];
this.gcDetailPeek0.DataSource = null;
this.gcDetailPeek0.DataSource = dataSource.Tables[yhj_womdab.__TableName];
}
///
/// 绑定【编辑页面】所有文本输入框的数据源
///
/// 数据源
protected override void DoBindingSummaryEditor(DataTable summary)
{
this.DoBindingEditorPanel(pcDetailEditor, summary);
//在此绑定其它自定义组件的数据源,参考frmCustomer的DoBindingSummaryEditor方法
}
public override void DoAdd(IButtonInfo sender)
{
base.DoAdd(sender);
if (this._UpdateType == UpdateType.Add){
// 在此添加所需的代码
}
}
//创建一条明细记录
private void CreateOneDetail(GridView gridView, int buttonIndex)
{
var gridControl = gridView.GridControl;
var detailTableName = (string) gridView.Tag;
//若要取排序序号,要将光标移到最后一行
if (buttonIndex == DetailButtons.Add){ gridView.MoveLast();}
//若表格无记录,转换为新增状态
if (gridView.RowCount == 0) buttonIndex = DetailButtons.Add;
DataRow row = _BLL.CurrentBusiness.Tables[detailTableName].NewRow();
row["ID"] = Guid.NewGuid();
row["PID"] = _BLL.DataBindRow["ID"];
//增加一条明细记录
if (buttonIndex == DetailButtons.Add)
{
_BLL.CurrentBusiness.Tables[detailTableName].Rows.Add(row);
gridControl.RefreshDataSource();//立即刷新数据源
gridView.FocusedRowHandle = gridView.RowCount - 1;//光标移到到最后一条记录
}
else if (buttonIndex == DetailButtons.Insert)//插入一条明细记录
{
_BLL.CurrentBusiness.Tables[detailTableName].Rows.InsertAt(row, gridView.FocusedRowHandle);
gridView.FocusedRowHandle = gridView.FocusedRowHandle - 1;
}
gridView.FocusedColumn = gridView.VisibleColumns[0];
}
public override void DoSave(IButtonInfo sender)// 保存数据
{
this.UpdateLastControl();//更新最后一个文本输入框的数据
try
{
frmWaitingEx.ShowMe(this);
DataSet dsTemplate = _BLL.CreateSaveData(_BLL.CurrentBusiness); //创建用于保存的临时数据
SaveResult result = _BLL.Update(dsTemplate);//调用业务逻辑层Update()方法保存数据
if (result.Success) //保存成功, 不需要重新加载数据,更新缓存数据即可.
{
if (_UpdateType == UpdateType.Add) _BLL.DataBindRow[yhj_womdaa.__KeyName] = result.GUID;
if (_UpdateType == UpdateType.Modify) _BLL.NotifyUser();//发送短信或Email通知制单人
this.UpdateSummaryCurrentRow(_BLL.DataBindRow);//刷新表格当前记录的缓存数据.
this.DoBindingSummaryEditor(_BLL.DataBinder); //重新绑定文本框的数据源,刷新数据
if (this._UpdateType == UpdateType.Add) {
var dt = (this.gvSummary.DataSource as DataView).ToTable();
var rowIndex = -1;
for (rowIndex = 0; rowIndex < dt.Rows.Count; rowIndex++) {
if (dt.Rows[rowIndex]["ID"].ToString() == result.GUID) {
break;
}
}
if (rowIndex != -1) {
this.gvSummary.FocusedRowHandle = rowIndex;
this.gvSummary.MakeRowVisible(rowIndex);
}
}
base.DoSave(sender); //调用基类的方法. 此行代码应放较后位置.
frmWaitingEx.HideMe(this);
Msg.ShowInformation("保存成功!");
}
else
{
Msg.Warning("保存失败!");
}
}
finally
{
frmWaitingEx.HideMe(this);
}
}
///
/// 保存数据后,更新表格中当前记录的数据(更新缓存资料)
///
/// 当前修改的记录
/// 当前单据号码
protected void UpdateSummaryCurrentRow(DataRow currentRow)
{
//若表格没有数据源,要下载当前单据的数据
if (gcSummary.DataSource == null || gvSummary.RowCount == 0)
{
//实例化查询参数
Queryyhj_womdaa P = new Queryyhj_womdaa
{
daa001="",
sccj="",
scxt="",
daa014=""
};
DataTable dt = _BLLInstance.Query(P);//获取数据
DoBindingSummaryGrid(dt); //绑定主表表格的数据源
}
else
{
//调用基类方法更新表格中当前记录的缓存数据
base.UpdateSummaryRow(currentRow);
}
}
private void btnEmpty_Click(object sender, EventArgs e)
{
base.ClearContainerEditorText(pnlSearch);
}
private void btnQuery_Click(object sender, EventArgs e)
{
//查询数据
try
{
frmWaitingEx.ShowMe(this);
//实例化查询参数
Queryyhj_womdaa P = new Queryyhj_womdaa
{
daa001=ConvertEx.ToString(txt_daa001.EditValue),
sccj=ConvertEx.ToString(txt_sccj.EditValue),
scxt=ConvertEx.ToString(txt_scxt.EditValue),
daa014=ConvertEx.ToString(txt_daa014.EditValue)
};
DataTable dt = _BLLInstance.Query(P);
this.DoBindingSummaryGrid(dt);//绑定主表的Grid
this.ShowSummaryPage(true); //显示Summary页面.
if (gvSummary.RowCount == 0){ Msg.Warning("没有找到数据!");
}
else
{
this.gvSummary.FocusedRowHandle = 0;
this.gvSummary.SelectRow(0);
this.BindDetailGrids();
}
}
finally
{
frmWaitingEx.HideMe(this);
}
}
//给明细表绑定KeyDown事件,控制按回车事件
private void gvDetail_KeyDown(object sender, KeyEventArgs e)
{
var gridView = (GridView) sender;
//表格按回车键自动跳转到下一个可编辑列, 若是最后一列,自动新增一条记录
GridMovetor.OnGridViewKeyDown(gridView, e);
}
}
}