| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518 |
-
- using System;
- using System.Data;
- using System.Windows.Forms;
- using Dongke.WinForm.Controls;
- using Dongke.WinForm.Utilities;
- namespace Dongke.IBOSS.PRD.Client.Controls.SearchBox
- {
- /// <summary>
- /// 查询窗体
- /// </summary>
- public partial class SearchBoxForm : FormDialog, ISearchBoxForm
- {
- #region 成员变量
- /// <summary>
- /// 指示是否能够多项选择。
- /// </summary>
- private bool _multiSelect = false;
- /// <summary>
- /// 查询的范围权限类型
- /// </summary>
- private PurviewType _purviewType = PurviewType.None;
- /// <summary>
- /// 选定的数据
- /// </summary>
- private DataTable _checkedData = null;
- /// <summary>
- /// 查询结果的主键
- /// </summary>
- private string _pk = null;
- /// <summary>
- /// 扩展属性
- /// </summary>
- private ExtendedProperties _properties = null;
- #endregion
- #region 构造函数
- /// <summary>
- /// 查询窗体
- /// </summary>
- protected SearchBoxForm()
- {
- InitializeComponent();
- if (!this.DesignMode)
- {
- this.ResetFormLayout();
- }
- }
- #endregion
- #region 属性
- /// <summary>
- /// 获取或设置查询结果的主键。
- /// </summary>
- public string PKMember
- {
- get
- {
- return this._pk;
- }
- set
- {
- if (this._pk != value)
- {
- if (this._checkedData != null && !string.IsNullOrEmpty(value))
- {
- if (this._checkedData.Columns.Contains(value))
- {
- this._checkedData.PrimaryKey = new DataColumn[] { this._checkedData.Columns[value] };
- }
- else
- {
- return;
- }
- }
- this._pk = value;
- }
- }
- }
- /// <summary>
- /// 获取或设置一个值,该值指示是否能够多项选择。
- /// </summary>
- public bool MultiSelect
- {
- get
- {
- return this._multiSelect;
- }
- set
- {
- if (this._multiSelect != value)
- {
- this._multiSelect = value;
- this.ResetFormLayout();
- }
- }
- }
- /// <summary>
- /// 获取或设置限制查询的范围权限类型。
- /// </summary>
- public PurviewType PurviewType
- {
- get
- {
- return this._purviewType;
- }
- set
- {
- if (this._purviewType != value)
- {
- this._purviewType = value;
- }
- }
- }
- /// <summary>
- /// 获取选定的数据项。
- /// </summary>
- public DataTable CheckedData
- {
- get
- {
- return this._checkedData;
- }
- }
- /// <summary>
- /// 获取或设置其他自定义属性。
- /// </summary>
- public ExtendedProperties Properties
- {
- get
- {
- if (this._properties == null)
- {
- this._properties = new ExtendedProperties();
- }
- return this._properties;
- }
- set
- {
- this._properties = value;
- }
- }
- /// <summary>
- /// 获取其他自定义属性个数。
- /// </summary>
- public int PropertieCount
- {
- get
- {
- if (this._properties == null)
- {
- return 0;
- }
- return this._properties.Count;
- }
- }
- #endregion
- #region 公有方法
- /// <summary>
- /// 窗体中数据保存后,需要继续操作,并初始化窗体时调用。
- /// </summary>
- public override void RefreshData()
- {
- base.RefreshData();
- this.dgvChecked.DataSource = null;
- }
- /// <summary>
- /// 点击查询按钮时调用。
- /// </summary>
- /// <returns>操作结果</returns>
- public override bool QueryData()
- {
- bool result = base.QueryData();
- DataTable data = this.dgvSelected.DataSource as DataTable;
- if (data != null && !string.IsNullOrEmpty(this._pk))
- {
- data.PrimaryKey = new DataColumn[] { data.Columns[this._pk] };
- }
- if (this._multiSelect && data!= null && !data.Columns.Contains("SEL"))
- {
- DataColumn col = new DataColumn("SEL", typeof(int));
- col.DefaultValue = 0;
- data.Columns.Add(col);
- data.AcceptChanges();
- }
- if (this.dgvSelected.RowCount > 0)
- {
- this.dgvSelected.Rows[0].Selected = true;
- }
- this.dgvSelected.IsSetInputColumnsColor = true;
- return result;
- }
- /// <summary>
- /// 设置查询条件
- /// </summary>
- public virtual void SetConditions(params object[] values)
- {
- if (values.Length > 0)
- {
- //this.txtCondition1.Text = values[0].ToString();
- }
- }
- /// <summary>
- /// 清除查询条件
- /// </summary>
- public override void ClearConditions()
- {
- //this.txtCondition1.Clear();
- }
- /// <summary>
- /// 清除查询结果
- /// </summary>
- public override void ClearQueryResults()
- {
- this.dgvSelected.DataSource = null;
- }
- /// <summary>
- /// 根据多选、单选设定窗体显示样式
- /// </summary>
- public virtual void ResetFormLayout()
- {
- if (this._multiSelect)
- {
- // 多选
- this.dgvChecked.Visible = true;
- this.colChk.Visible = true;
- this.dgvSelected.SelectionMode = DataGridViewSelectionMode.RowHeaderSelect;
- this.colSel.Visible = true;
- this.dgvSelected.ReadOnly = false;
- this.splSplitContainer.Panel2Collapsed = false;
- this.splSplitContainer.IsSplitterFixed = false;
- }
- else
- {
- // 单选
- this.dgvChecked.Visible = false;
- this.colChk.Visible = false;
- this.dgvSelected.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
- this.colSel.Visible = false;
- this.dgvSelected.ReadOnly = true;
- this.splSplitContainer.Panel2Collapsed = true;
- this.splSplitContainer.IsSplitterFixed = true;
- }
- }
- #endregion
- #region 保护方法
- /// <summary>
- /// 窗体加载前调用(设置Form.Text、按钮等控件Text等)。
- /// </summary>
- protected override void InitForm()
- {
- this.tsbtnAdaptive.Text = Dongke.IBOSS.PRD.Basics.BaseResources.Constant.TSBTN_ADAPTIVE;
- this.tsbtnSearch.Text = Dongke.IBOSS.PRD.Basics.BaseResources.Constant.BTN_SEARCH;
- this.tsbtnClearCondition.Text = Dongke.IBOSS.PRD.Basics.BaseResources.Constant.BTN_CLEARCONDITION;
- this.btnOK.Text = Dongke.IBOSS.PRD.Basics.BaseResources.Constant.BTN_SUBMIT;
- this.btnCancel.Text = Dongke.IBOSS.PRD.Basics.BaseResources.Constant.BTN_CANCEL;
- this.btnCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
- this.btnOK.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
- this.dgvChecked.AutoGenerateColumns = false;
- this.dgvSelected.AutoGenerateColumns = false;
- // 不显示选过的
- foreach (DataGridViewColumn item in this.dgvSelected.Columns)
- {
- if (item.Name == "colSel")
- {
- continue;
- }
- DataGridViewColumn col = (DataGridViewColumn)item.Clone();
- col.Name = "c" + col.Name;
- this.dgvChecked.Columns.Add(col);
- }
- }
- /// <summary>
- /// 窗体加载时调用(获取窗体初始化数据等)。
- /// </summary>
- protected override bool LoadForm()
- {
- if (this._multiSelect)
- {
- if (this._checkedData != null && this._checkedData.Rows.Count > 0)
- {
- this.dgvChecked.DataSource = this._checkedData;
- this.colChk.HeaderCellEx.CheckedAllState = CheckState.Checked;
- }
- }
- return true;
- }
- /// <summary>
- /// 验证窗体中数据是否改变。
- /// </summary>
- /// <returns>数据被更改true,其他false</returns>
- protected override bool CheckDirty()
- {
- return false;
- }
- /// <summary>
- /// 验证画面输入项目
- /// </summary>
- /// <returns>验证通过true,其他false</returns>
- protected override bool CheckInputData()
- {
- return true;
- }
- /// <summary>
- /// 保存或设置数据到其他位置(其他画面或DB)
- /// </summary>
- /// <returns>保存或设置成功true,其他false</returns>
- protected override bool SetDataToOther()
- {
- this._checkedData = null;
- if (this._multiSelect)
- {
- //this.dgvSelected.EndEdit();
- DataTable data = this.dgvSelected.DataSource as DataTable;
- if (data != null)
- {
- data.DefaultView.Sort = "";
- data.DefaultView.RowFilter = colSel.DataPropertyName + " = 1";
- this._checkedData = data.DefaultView.ToTable();
- this._checkedData.PrimaryKey = new DataColumn[] { this._checkedData.Columns[this._pk] };
- }
- //this.dgvChecked.EndEdit();
- data = this.dgvChecked.DataSource as DataTable;
- if (data != null)
- {
- data.DefaultView.Sort = "";
- data.DefaultView.RowFilter = this.colChk.DataPropertyName + " = 1";
- if (this._checkedData == null)
- {
- this._checkedData = data.DefaultView.ToTable();
- this._checkedData.PrimaryKey = new DataColumn[] { this._checkedData.Columns[this._pk] };
- }
- else
- {
- this._checkedData.Merge(data.DefaultView.ToTable());
- }
- }
- //this.dgvSelected.DataSource = null;
- //this.dgvChecked.DataSource = null;
- }
- else
- {
- if (this.dgvSelected.SelectedRows != null && this.dgvSelected.SelectedRows.Count > 0)
- {
- DataTable data = this.dgvSelected.DataSource as DataTable;
- DataRowView rowView = this.dgvSelected.SelectedRows[0].DataBoundItem as DataRowView;
- if (data != null && rowView != null)
- {
- this._checkedData = data.Clone();
- this._checkedData.ImportRow(rowView.Row);
- }
- }
- }
- return true;
- }
- /// <summary>
- /// 保存或设置数据成功后提示消息
- /// </summary>
- protected override void ShowMessageOnSetSucceed()
- {
- }
- /// <summary>
- /// 保存或设置数据成功后提示消息(新建或复制时,询问是否继续操作)
- /// </summary>
- /// <returns>继续操作true,其他false</returns>
- protected override bool ShowMessageOnAddSucceed()
- {
- return false;
- }
- /// <summary>
- /// 验证查询条件。
- /// </summary>
- /// <returns>验证通过true,其他false</returns>
- protected override bool CheckQueryConditions()
- {
- return true;
- }
- /// <summary>
- /// 查询数据。
- /// </summary>
- /// <returns>验证通过true,其他false</returns>
- protected override bool QueryDataFromOther()
- {
- return true;
- }
- #endregion
- #region 事件处理
- /// <summary>
- /// 自适应列宽
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void tsbtnAdaptive_Click(object sender, EventArgs e)
- {
- this.dgvSelected.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
- this.dgvChecked.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
- }
- /// <summary>
- /// 点击查询按钮
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void btnQuery_Click(object sender, System.EventArgs e)
- {
- try
- {
- this.QueryData();
- }
- catch
- {
- }
- }
- /// <summary>
- /// 点击清除按钮
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void btnClear_Click(object sender, System.EventArgs e)
- {
- try
- {
- this.ClearConditions();
- }
- catch
- {
- }
- }
- /// <summary>
- /// 点击确定按钮
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void btnOK_Click(object sender, System.EventArgs e)
- {
- try
- {
- this.SetData();
- }
- catch
- {
- }
- }
- /// <summary>
- /// 点击取消按钮
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void btnCancel_Click(object sender, System.EventArgs e)
- {
- this.Close();
- }
- /// <summary>
- /// 双击选择
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void dgvSelected_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
- {
- try
- {
- if (this._multiSelect || e.ColumnIndex < 0 || e.RowIndex < 0)
- {
- return;
- }
- this.SetData();
- }
- catch
- {
- }
- }
- #endregion
- private void dgvSelected_Sorted(object sender, EventArgs e)
- {
- this.dgvSelected.IsSetInputColumnsColor = true;
- }
- private void dgvChecked_Sorted(object sender, EventArgs e)
- {
- this.dgvChecked.IsSetInputColumnsColor = true;
- }
- }
- }
|