#region
|
|
using System;
|
using System.ComponentModel;
|
using System.Data;
|
using CSFrameworkV5.Business;
|
using CSFrameworkV5.Business.BLL_Permission;
|
using CSFrameworkV5.Common;
|
using CSFrameworkV5.Core;
|
using CSFrameworkV5.Library;
|
using CSFrameworkV5.Library.CommonClass;
|
using CSFrameworkV5.Models;
|
using DevExpress.XtraTreeList;
|
|
#endregion
|
|
namespace CSFrameworkV5.SystemModule
|
{
|
/// <summary>
|
/// Organization的资料管理窗体,由代码生成器(Code Generator)自动生成
|
/// </summary>
|
public partial class frmOrganization : frmBaseDataDictionary
|
{
|
private bllGroup _BLLInstance;
|
|
public frmOrganization()
|
{
|
InitializeComponent();
|
}
|
|
private void btnEmpty_Click(object sender, EventArgs e)
|
{
|
ClearContainerEditorText(pnlSearch);
|
}
|
|
private void btnQuery_Click(object sender, EventArgs e)
|
{
|
//搜索数据
|
try
|
{
|
frmWaitingEx.ShowMe(this);
|
CCursor.ShowWaitCursor();
|
var dt = _BLLInstance.Search(
|
ConvertEx.ToString(txt_GroupCode.EditValue),
|
ConvertEx.ToString(txt_GroupName.EditValue), "",
|
ConvertEx.ToString(txt_Owner1.EditValue),
|
ConvertEx.ToString(txt_OwnerTel1.EditValue));
|
DoBindingSummaryGrid(dt); //绑定主表的Grid
|
ShowSummaryPage(true); //显示Summary页面.
|
}
|
finally
|
{
|
frmWaitingEx.HideMe(this);
|
}
|
|
if (gvSummary.RowCount == 0) Msg.Warning("没有找到数据!");
|
}
|
|
protected override void
|
ButtonStateChanged(UpdateType currentState) //按钮状态改变时触发的事件
|
{
|
base.ButtonStateChanged(currentState);
|
|
if (currentState == UpdateType.Modify)
|
{
|
txtGroupCode.Enabled = false; //修改状态下不允许修改主键的数据
|
txtGroupCode.Properties.ReadOnly = true; //修改状态下不允许修改主键的数据
|
}
|
|
txtLastUpdateDate.Properties.ReadOnly = true; //禁止修改
|
txtLastUpdatedBy.Properties.ReadOnly = true; //禁止修改
|
|
txtGroupCode.Enabled = currentState == UpdateType.Add;
|
txtAttributeCodes.Enabled = IsAddOrEditMode;
|
}
|
|
public override void DoAdd(IButtonInfo sender)
|
{
|
base.DoAdd(sender);
|
SetEditorBindingValue(txtParentGroupCode, "", true);
|
}
|
|
/// <summary>
|
/// 绑定修改页面中所有输入框的数据源
|
/// </summary>
|
/// <param name="summary">数据源</param>
|
protected override void DoBindingSummaryEditor(DataTable summary)
|
{
|
DoBindingEditorPanel(pcDetailEditor, summary);
|
//在此可绑定其它自定义的输入框,参考frmCustomer的DoBindingSummaryEditor方法
|
DataBinder.BindingControl(txtAttributeCodes, summary,
|
tb_MyGroup.AttributeCodes, "EditValue");
|
DataBinder.BindingControl(txtParentGroupCode, summary,
|
tb_MyGroup.ParentGroupCode, "EditValue");
|
}
|
|
public override void DoDelete(IButtonInfo sender)
|
{
|
AssertFocusedRow(); //检查是否选择一条记录
|
|
//调用业务逻辑类删除记录
|
var summary =
|
_SummaryView.GetDataRow(_SummaryView.FocusedRowHandle);
|
|
var groupCode = summary[tb_MyGroup.GroupCode].ToStringEx(); //组编号
|
var groupName = summary[tb_MyGroup.GroupName].ToStringEx();
|
|
if (false ==
|
Msg.AskQuestion(
|
"确定要删除 " + groupName + " 的资料,包括组织机构子级资料及所有权限资料?")) return;
|
|
var b = _BLLInstance.DeleteGroupData(groupCode);
|
AssertEqual(b, true, "删除记录时发生错误!");
|
|
//同步删除导航结点
|
var node = tlSummary.FindNodeByKeyID(groupCode);
|
if (node != null) tlSummary.Nodes.Remove(node);
|
|
DeleteSummaryRow(_SummaryView.FocusedRowHandle); //删除表格中的资料行
|
|
if (_SummaryView.FocusedRowHandle < 0) //删除了最後一条记录. 显示Summary页面.
|
ShowSummaryPage(true);
|
else
|
DoViewContent(null);
|
|
//最后处理自定义方法
|
DoAfterDelete(groupCode);
|
|
if (IsViewMode) LoadTree();
|
|
Msg.ShowInformation("成功删除组 " + groupName + " 的资料及所有权限资料!");
|
}
|
|
public override void DoRefreshData(IButtonInfo sender)
|
{
|
base.DoRefreshData(sender);
|
|
DevTreeListView.SetImageIndex(tlSummary, null, 1, 0);
|
}
|
|
public override void DoSave(IButtonInfo sender)
|
{
|
var code = txtGroupCode.Text;
|
var isAdd = UpdateType.Add == _UpdateType;
|
base.DoSave(sender);
|
|
//保存成功,定位
|
if (!IsAddOrEditMode)
|
{
|
if (isAdd) DataDictCache.RefreshCache(tb_MyGroup.__TableName);
|
|
LoadTree();
|
var N = tlSummary.FindNodeByKeyID(code);
|
if (N != null) tlSummary.FocusedNode = N;
|
}
|
}
|
|
private void frmOrganization_Load(object sender, EventArgs e)
|
{
|
InitializeForm(); //自定义初始化操作
|
}
|
|
protected override void InitializeForm()
|
{
|
_SummaryView =
|
new DevGridView(
|
gvSummary); //实例化数据主视图,此接口可支持不同的主视图,比如Grid,TreeList.
|
_DetailGroupControl = pcDetailEditor; //修改页面所有输入框的容器
|
_BLL = new bllGroup(); //实例化基类业务逻辑层
|
_BLLInstance = _BLL as bllGroup; //本窗体的业务层对象引用
|
base.InitializeForm();
|
|
DataBinderTools.BoundUser(txtOwner1);
|
DataBinderTools.BoundUser(txtOwner2);
|
DataBinderTools.BoundUser(txt_Owner1);
|
DataBinderTools.BoundUser(repM_Owner1);
|
DataBinderTools.BoundUser(repM_Owner2);
|
DataBinderTools.BoundUser(txtLastUpdatedBy);
|
DataBinderTools.BoundCheckEdit(rep_IsVisible);
|
|
var attrs = DataDictCache.Cache.CustomerAttributes;
|
txtAttributeCodes.BindingDataSource(attrs, "AttributeCode",
|
"NativeName");
|
|
DataBinderTools.BoundOrganization(txtParentGroupCode, imageList1);
|
|
LoadTree();
|
}
|
|
private void LoadDataByTree()
|
{
|
if (tlSummary.FocusedNode != null)
|
{
|
var groupCode = ConvertEx.ToString(
|
tlSummary.FocusedNode.GetValue(tb_MyGroup.GroupCode));
|
btnEmpty_Click(btnEmpty, new EventArgs());
|
txt_GroupCode.EditValue = groupCode;
|
btnQuery.PerformClick(); //执行查询
|
|
if (gvSummary.RowCount > 0)
|
{
|
var H = gvSummary.LocateByValue(tb_MyGroup.GroupCode,
|
groupCode);
|
if (H >= 0) gvSummary.FocusedRowHandle = H;
|
}
|
}
|
}
|
|
private void LoadTree()
|
{
|
var treeData = _BLLInstance.GetLookupData(); //必须取数据,缓存没同步
|
tlSummary.LookAndFeel.UseDefaultLookAndFeel = false;
|
tlSummary.LookAndFeel.UseWindowsXPTheme = true;
|
tlSummary.StateImageList = imageList1;
|
tlSummary.KeyFieldName = tb_MyGroup.GroupCode; //设置主键
|
tlSummary.ParentFieldName = tb_MyGroup.ParentGroupCode; //设置父级主键
|
tlSummary.RootValue = ""; //顶级树结点的值
|
tlSummary.BeginUpdate();
|
tlSummary.DataSource = treeData;
|
DevTreeListView.SetImageIndex(tlSummary, null, 1, 0);
|
DevStyle.SetTreeListSelectStyle(tlSummary);
|
tlSummary.EndUpdate();
|
tlSummary.ExpandAll();
|
}
|
|
protected override void ShowSummary()
|
{
|
//重写此方法打开窗体时不显示任何数据
|
}
|
|
private void tlSummary_FocusedNodeChanged(object sender,
|
FocusedNodeChangedEventArgs e)
|
{
|
LoadDataByTree();
|
}
|
|
private void txtParentGroupCode_QueryPopUp(object sender,
|
CancelEventArgs e)
|
{
|
DataBinderTools.BoundOrganization(txtParentGroupCode, imageList1);
|
}
|
|
private void txtParentGroupCode_Validating(object sender,
|
CancelEventArgs e)
|
{
|
if (!IsAddOrEditMode) return;
|
|
//修改父级结点,不能改为它的子结点
|
var codeNew = ConvertEx.ToString(txtParentGroupCode.EditValue);
|
var codeOld =
|
ConvertEx.ToString(
|
_BLLInstance.DataBinderRow[tb_MyGroup.ParentGroupCode]);
|
var codeCur = ConvertEx.ToString(txtGroupCode.EditValue);
|
|
if (codeNew == "" || codeOld == "" ||
|
codeNew == codeOld) return; //改的值相同,不处理
|
|
if (codeNew == codeCur) //父节点不能改为自己
|
{
|
e.Cancel = true;
|
SetEditorBindingValue(txtParentGroupCode, codeOld, true); //还原数据
|
Msg.Warning("父节点不能改为自己!");
|
return;
|
}
|
|
//新旧值都不为空,表示用户修改了父级结点
|
if (!string.IsNullOrEmpty(codeNew))
|
{
|
var nodeCur =
|
tlSummary.FindNodeByFieldValue(tb_MyGroup.GroupCode,
|
codeCur);
|
var nodeNew =
|
tlSummary.FindNodeByFieldValue(tb_MyGroup.GroupCode,
|
codeNew);
|
|
//检查修改后的结点是当前结点的子结点
|
if (nodeNew.HasAsParent(nodeCur))
|
{
|
SetEditorBindingValue(txtParentGroupCode, codeOld,
|
true); //还原数据
|
e.Cancel = true;
|
Msg.Warning("乱套了!不能修改为它的子结点!");
|
}
|
}
|
}
|
|
//检查主表数据完整性
|
protected override bool ValidatingData()
|
{
|
if (ConvertEx.ToString(txtGroupCode.EditValue).Trim() ==
|
string.Empty)
|
{
|
Msg.Warning("组织编号不能为空!");
|
txtGroupCode.Focus();
|
return false;
|
}
|
|
if (ConvertEx.ToString(txtGroupName.EditValue).Trim() ==
|
string.Empty)
|
{
|
Msg.Warning("组织名称不能为空!");
|
txtGroupName.Focus();
|
return false;
|
}
|
|
if (ConvertEx.ToString(txtAttributeCodes.EditValue).Trim() ==
|
string.Empty)
|
{
|
Msg.Warning("类别不能为空!");
|
txtAttributeCodes.Focus();
|
return false;
|
}
|
|
if (ConvertEx.ToString(txtOwner1.EditValue).Trim() == string.Empty)
|
{
|
Msg.Warning("主管不能为空!");
|
txtOwner1.Focus();
|
return false;
|
}
|
|
return true;
|
}
|
}
|
}
|