#region
using System;
using System.Data;
using System.Windows.Forms;
using CSFrameworkV5.Common;
using CSFrameworkV5.Core;
using DevExpress.XtraEditors;
#endregion
namespace CSFrameworkV5.Library.PermissionForms
{
///
/// 点击确定应用数据事件
///
/// 数据表
/// 复选列表框
///
public delegate bool OnUserRoleEditorApply(DataTable detail,
CheckedListBoxControl listBox, DateTime expireDate);
public partial class frmUserRolePicker : frmBase
{
private string _codeField;
private DataTable _detail;
private string _displayField;
private bool _isOK;
private DataTable _list;
private OnUserRoleEditorApply _myMethod;
private string _nameField;
private bool _supportRemoveItem;
private frmUserRolePicker()
{
InitializeComponent();
}
private void btnApply_Click(object sender, EventArgs e)
{
try
{
frmWaitingEx.ShowMe(this);
if (_myMethod != null)
{
_isOK = _myMethod(_detail, chkList, txtExpireDate.DateTime);
if (_isOK)
{
Msg.ShowInformation("操作成功!");
btnApply.Tag = "OK";
Close();
}
else
{
Msg.Warning("处理数据发生错误!");
}
}
else
{
Msg.Warning("没有提供处理事件:OnDetailItemEditorApply!");
}
}
finally
{
frmWaitingEx.HideMe(this);
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
btnApply.Tag = null;
Close();
}
private void btnSearch_Click(object sender, EventArgs e)
{
if (txtCodeName.Text != "")
{
var filter = _codeField + " LIKE '%" + txtCodeName.Text +
"%' OR " + _nameField + " LIKE '%" +
txtCodeName.Text + "%'";
var dt = _list.Copy();
dt.DefaultView.RowFilter = filter;
dt = dt.DefaultView.ToTable();
InitEditor(dt);
}
else
{
InitEditor(_list);
}
}
///
/// 通用接口
///
/// 点确定按钮回调函数
/// 本次处理的数据
/// 参考数据,用于填充ListBox列表组件数据源
/// 取值字段名
/// 标题字段名
/// 显示字段名
/// 是否支持删除项目
///
public static bool Execute(OnUserRoleEditorApply callBack,
DataTable detail,
DataTable list,
string codeField, string nameField, string displayField,
bool supportRemoveItem)
{
var form = new frmUserRolePicker();
form._myMethod = callBack;
form._codeField = codeField;
form._detail = detail;
form._displayField = displayField;
form._list = list;
form._nameField = nameField;
form._supportRemoveItem = supportRemoveItem;
form.InitEditor(list);
form.ShowDialog();
return form.btnApply.Tag != null;
}
private void frmDetailItemEditor_Load(object sender, EventArgs e)
{
txtExpireDate.DateTime = DateTime.Today.AddYears(10);
}
private void InitEditor(DataTable listData)
{
if (_displayField == "") _displayField = _nameField;
CheckState chk;
string code;
chkList.Items.Clear();
foreach (DataRow R in listData.Rows)
{
code = ConvertEx.ToString(R[_codeField]);
var rs = _detail.Select(_codeField + "='" + code + "'");
if (rs.Length > 0)
chk = CheckState.Checked;
else
chk = CheckState.Unchecked;
if (_supportRemoveItem) //支持删除功能
chkList.Items.Add(code, R[_displayField].ToStringEx(), chk,
true);
else //编辑器不支持删除(去掉勾),要禁止已勾选的项目
chkList.Items.Add(code, R[_displayField].ToStringEx(), chk,
rs.Length == 0);
}
}
}
}