#region
using System;
using System.Data;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Views.Grid;
#endregion
namespace CSFrameworkV5.Library.UserControls
{
///
/// 应用CodeNamePicker组件,查询数据的事件
///
/// 编号
/// 名称
///
public delegate DataTable OnShowFiltredData(string code, string name);
///
/// 标准编号名称选择框
///
public partial class ucCodeNamePicker : UserControl
{
private EventHandler _OnClear;
private LookupEditorPopupControlClick _OnRowClick;
private OnShowFiltredData _OnShowFiltredData;
private bool _ShowClear;
public ucCodeNamePicker()
{
InitializeComponent();
}
public PopupContainerControl PopupContainer => popupContainerControl1;
public bool ShowClear
{
set => _ShowClear = value;
get => _ShowClear;
}
private void btnClose_Click(object sender, EventArgs e)
{
if (_OnClear != null)
{
_OnClear(sender, e);
txt_Code.Text = "";
txt_Name.Text = "";
}
}
public void DoAddColumn(string fieldName, string caption, int width)
{
var col = new GridColumn();
col.FieldName = fieldName;
col.Name = "col" + fieldName;
col.Width = width;
col.Caption = caption;
col.Visible = true;
col.VisibleIndex = gvSummary.Columns.Count;
gvSummary.Columns.Add(col);
}
public void DoSetCaption(string code, string name)
{
colID.Caption = code;
colName.Caption = name;
}
public void DoSetEditorCaption(string code, string name)
{
lbCode.Text = code;
lbName.Text = name;
}
public void DoSetField(string codeField, string nameField)
{
colID.FieldName = codeField;
colName.FieldName = nameField;
}
public void DoSetSize(int height)
{
var i = 0;
foreach (GridColumn c in gvSummary.Columns) i += c.Width;
if (i + 50 < 300)
Width = 300;
else
Width = i + 50;
Height = height;
}
public void DoShowDefaultData(DataTable source)
{
gcSummary.DataSource = source;
gcSummary.RefreshDataSource();
}
private void DoShowFiltredData()
{
if (_OnShowFiltredData != null)
{
var dt = _OnShowFiltredData(txt_Code.Text, txt_Name.Text);
gcSummary.DataSource = null;
gcSummary.DataSource = dt;
gcSummary.RefreshDataSource();
}
}
private void gvSummary_RowClick(object sender, RowClickEventArgs e)
{
if (_OnRowClick != null)
{
popupContainerControl1.Hide();
_OnRowClick(gvSummary.GetDataRow(gvSummary.FocusedRowHandle));
txt_Code.Text = "";
txt_Name.Text = "";
}
}
public event EventHandler OnClear
{
add => _OnClear = value;
remove => _OnClear = null;
}
public event LookupEditorPopupControlClick OnRowClick
{
add => _OnRowClick = value;
remove => _OnRowClick = null;
}
public event OnShowFiltredData OnShowFiltredData
{
add => _OnShowFiltredData = value;
remove => _OnShowFiltredData = null;
}
private void txt_Code_EditValueChanged(object sender, EventArgs e)
{
DoShowFiltredData();
}
private void txt_Name_EditValueChanged(object sender, EventArgs e)
{
DoShowFiltredData();
}
private void ucCodeNamePicker_Load(object sender, EventArgs e)
{
btnClear.Visible = _ShowClear;
}
}
}