/******************************************************************************* * Copyright(c) 2014 dongke All rights reserved. / Confidential * 类的信息: * 1.程序名称:dkInChecked.cs * 2.功能描述:盘点选择控件 * 编辑履历: * 作者 日期 版本 修改内容 * 王鑫 2014/09/15 1.00 新建 *******************************************************************************/ using System; using System.ComponentModel; using System.Data; using System.Drawing; using System.Windows.Forms; using Dongke.IBOSS.PRD.Basics.BaseControls; using Dongke.IBOSS.PRD.Client.Controls.FormCommon; using Dongke.IBOSS.PRD.WCF.DataModels; using Dongke.IBOSS.PRD.WCF.Proxys; namespace Dongke.IBOSS.PRD.Client.Controls.SearchTextBox { public partial class dkInChecked : UserControl { #region 成员变量 /// /// 数据选择窗体 /// private S_CMN_021 _frmInChecked; /// /// 控件是否可用 /// private bool _isEnabled = true; /// /// 数据源 /// private DataTable _dataSource = null; /// /// 盘点单ID /// private int? _inCheckedID; /// /// 盘点单号 /// private string _inCheckedNo; /// /// 控件是否是必须输入项目 /// private bool _isMustInput; /// /// 是否只显示有效数据 /// private bool _IsOnlyShowValid = true; #endregion #region 构造函数 public dkInChecked() { InitializeComponent(); this.ReadOnly = true; } #endregion #region 属性 /// /// 是否只显示有效数据 /// [Description("设置控件是否只显示有效数据。")] [DefaultValue(true)] public bool IsOnlyShowValid { get { return _IsOnlyShowValid; } set { _IsOnlyShowValid = value; } } /// /// 获取或者设定控件是否是必须输入项目 /// [DefaultValue("False")] [Description("获取或者设定控件是否是必须输入项目。")] public bool IsMustInput { get { return _isMustInput; } set { _isMustInput = value; // 项目为必须输入项时,需要修改字体颜色 if (_isMustInput) { this.lblPost.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(155)))), ((int)(((byte)(39)))), ((int)(((byte)(39))))); } else { this.lblPost.ForeColor = System.Drawing.SystemColors.ControlText; } } } /// /// Lable标签文本 /// [DefaultValue("工种名称")] [Description("获取或者设定Lable标签字符。")] public string Title { get { return this.lblPost.Text; } set { this.lblPost.Text = value; AdjustControl(); } } /// /// 获取或者设定控件的数据源。 /// [Description("获取或者设定控件的数据源。")] public DataTable DataSource { get { return _dataSource; } set { DataTable dataSource = SetFilter(value); _dataSource = dataSource; } } /// /// 获取或者设定控件的尺寸大小。 /// [Description("获取或者设定控件的尺寸大小。")] public new Size Size { get { return base.Size; } set { base.Size = value; AdjustControl(); } } /// /// 获取或者设定控件的文本框的文本字符串。 /// [Description("获取或者设定控件的文本框的文本字符串。")] public override string Text { get { return this.txtJobs.Text; } set { this.txtJobs.Text = value; } } /// /// 获取或者设定控件的文本框的背景颜色。 /// [Description("获取或者设定控件的文本框的背景颜色。")] public Color TxtUserBackColor { get { return this.txtJobs.BackColor; } set { this.txtJobs.BackColor = value; } } /// /// 获取或者设定控件的职务ID。 /// [Description("获取或者设定控件的职务ID。")] [DefaultValue(null)] public int? InCheckedID { get { return _inCheckedID; } set { this._inCheckedID = null; this._inCheckedNo = string.Empty; this.Text = string.Empty; if (value != null) { // 当数据源为null时,查询数据源 if (DataSource == null) { // 查询数据源 DataSource = GetInChecked(); } if (value != null && value != 0 && this.DataSource != null) { DataTable userTable = this.DataSource.Copy(); DataRow[] dataRows = userTable.Select("InCheckedID = " + value); if (dataRows.Length == 1) { this._inCheckedID = value; this._inCheckedNo = dataRows[0]["InCheckedNo"] as string; this.Text = dataRows[0]["InCheckedNo"] as string; } } } } } /// /// 获取或者设定控件的盘点单号 /// [Description("获取或者设定控件的盘点单号。")] public string InCheckedNo { get { return _inCheckedNo; } set { _inCheckedNo = value; } } /// /// 获取或者设定控件是否可用。 /// [System.ComponentModel.DefaultValue(null)] [Description("获取或者设定控件是否可用。")] public new bool Enabled { get { return _isEnabled; } set { _isEnabled = value; this.txtJobs.Enabled = _isEnabled; this.TabStop = _isEnabled; } } /// /// 获取或者设定控件是否只读。 /// [System.ComponentModel.DefaultValue(null)] [Description("获取或者设定控件是否只读。")] public bool ReadOnly { set { this.txtJobs.ReadOnly = value; } } /// /// 范围权限 /// public byte PurviewType { get; set; } /// /// 盘点类型 0:在产盘点 1:注浆盘点 2:模具盘点 /// [System.ComponentModel.DefaultValue(0)] public int CheckType { get; set; } #endregion #region 定义委托事件 public delegate void TextBoxChangedHandle(object sender, TextChangeEventArgs e); public event TextBoxChangedHandle UserValueChanged; #endregion #region 控件事件 public class TextChangeEventArgs : EventArgs { public TextChangeEventArgs(string message) { } } /// /// 控件尺寸大小改变事件 /// /// /// private void dkJobsSearchBox_SizeChanged(object sender, EventArgs e) { AdjustControl(); } /// /// 查询按钮按下事件 /// /// /// private void btnSearch_Click(object sender, EventArgs e) { // 如果属性是不可用,是不能进行点击事件的 if (!Enabled) { return; } // 当数据源为null时,查询数据源 if (DataSource == null) { // 查询数据源 DataSource = GetInChecked(); } // 释放窗体资源 if (null != _frmInChecked) { _frmInChecked.Dispose(); _frmInChecked = null; } // 打开查询窗体 _frmInChecked = new S_CMN_021(); _frmInChecked.DataSource = this.DataSource; DialogResult dialogResult = _frmInChecked.ShowDialog(); // 查询窗体返回值给控件赋值 if (dialogResult.Equals(DialogResult.OK)) { if (_frmInChecked.DataRow != null) { _inCheckedID = Convert.ToInt32(_frmInChecked.DataRow["InCheckedID"]); _inCheckedNo = _frmInChecked.DataRow["InCheckedNo"].ToString(); this.Text = _frmInChecked.DataRow["InCheckedNo"].ToString(); } } } /// /// 清除控件的值 /// /// /// private void txtJobs_KeyDown(object sender, KeyEventArgs e) { this.txtJobs.Text = ""; this._inCheckedID = null; this._inCheckedNo = string.Empty; } /// /// 文本框文本改变事件 /// /// /// private void txtJobs_TextChanged(object sender, EventArgs e) { if (UserValueChanged != null) { UserValueChanged(this, new TextChangeEventArgs(this.txtJobs.Text)); } } #endregion #region 私有方法 /// /// 设置控件的样式 /// protected void AdjustControl() { // 取得按钮控件的宽度和高度 int buttonWidth = (this.btnSearch.Visible) ? this.btnSearch.Width : 0; this.Height = this.btnSearch.Height; // 设置控件的尺寸和位置。 this.txtJobs.Location = new System.Drawing.Point(this.lblPost.Width + ControlsConst.CONTROLSPACE, (this.Height - this.txtJobs.Height) / 2); this.txtJobs.Size = new System.Drawing.Size(this.Width - this.btnSearch.Width - (this.lblPost.Width + ControlsConst.CONTROLSPACE * 2), this.Height); this.btnSearch.Location = new System.Drawing.Point(this.Width - this.btnSearch.Width, (this.Height - this.btnSearch.Height) / 2); // 设置标签的尺寸和位置。 this.lblPost.Location = new System.Drawing.Point(0, (this.Height - this.lblPost.Height) / 2); this.lblPost.Size = new System.Drawing.Size(this.lblPost.Width, this.lblPost.Height); } /// /// 过滤数据源 /// /// /// protected DataTable SetFilter(DataTable dataSource) { return dataSource; } /// /// 调用服务方法获取用户信息 /// /// private DataTable GetInChecked() { DataSet userDataSet = null; if (CheckType == 0) { userDataSet = PMModuleProxy.Service.GetInCheckedList(); } else if (CheckType == 1) { ClientRequestEntity cre = new ClientRequestEntity(); cre.NameSpace = "GBChecked"; cre.Name = "seachbox_GetList"; ServiceResultEntity sre = PMModuleProxyNew.Service.HandleRequest(cre); if (sre.Status == Basics.BaseResources.Constant.ServiceResultStatus.Success) { userDataSet = sre.Data; } } else if (CheckType == 2) { ClientRequestEntity cre = new ClientRequestEntity(); cre.NameSpace = "FPC1101"; cre.Name = "seachbox_GetList"; ServiceResultEntity sre = PCModuleProxyNew.Service.HandleRequest(cre); if (sre.Status == Basics.BaseResources.Constant.ServiceResultStatus.Success) { userDataSet = sre.Data; } } if (userDataSet == null) { return new DataTable(); } if (userDataSet.Tables.Count <= 0) { return new DataTable(); } return userDataSet.Tables[0]; } #endregion } }