#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
{
///
/// Organization的资料管理窗体,由代码生成器(Code Generator)自动生成
///
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);
}
///
/// 绑定修改页面中所有输入框的数据源
///
/// 数据源
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;
}
}
}