Files
lserp_cs_5.0/插件库/Lskj.MyControl/LookUpAdd/FrmMain.cs
T
2026-07-10 15:25:05 +08:00

291 lines
9.4 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CommonLib.data;
using CommonLib;
using DevExpress.XtraGrid.Columns;
using DevExpress.Utils;
using DevExpress.XtraGrid.Views.Grid;
using System.Collections;
namespace Lskj.MyControl.LookUpAdd
{
public partial class FrmMain : FormBase
{
#region 外部属性
/// <summary>
/// sql语句
/// </summary>
public string SQL { get; set; }
/// <summary>
/// 列集合
/// </summary>
public Dictionary<string, string> Columns { get; set; }
/// <summary>
/// 选择Value字段
/// </summary>
public string ValueField { get; set; }
/// <summary>
/// 选择Text字段
/// </summary>
public string TextField { get; set; }
/// <summary>
/// 是否多选
/// </summary>
public bool IsMultiple { get; set; }
/// <summary>
/// 窗体高度
/// </summary>
public int WinHeight { get; set; }
/// <summary>
/// 窗体宽度
/// </summary>
public int WinWidth { get; set; }
/// <summary>
/// 返回Value
/// </summary>
public string ReturnValue { get; set; }
/// <summary>
/// 返回Text
/// </summary>
public string ReturnText { get; set; }
/// <summary>
/// 窗体标题
/// </summary>
public string FrmTitle { get; set; }
#endregion
private IList<string> RText = new List<string>();
private IList<string> RValue = new List<string>();
public FrmMain()
{
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (WinHeight > 0)
{
this.Height = WinHeight;
}
if (WinWidth > 0)
{
this.Width = WinWidth;
}
if (!string.IsNullOrEmpty(FrmTitle))
{
this.Text = FrmTitle;
}
if (!string.IsNullOrEmpty(ReturnText))
{
RText = ReturnText.Split(',').ToList();
}
if (!string.IsNullOrEmpty(ReturnValue))
{
RValue = ReturnValue.Split(',').ToList();
}
DataTable dt = SqlHelper.ExecuteDataSet(SQL).Tables[0];
//绑定列z
SetColumns(dt);
//绑定数据源
gridMain.DataSource = dt;
GridColumnCollection gc = new GridColumnCollection(null);
for (int i = 0; i < gvMain.Columns.Count; i++)
{
if (gvMain.Columns[i].Caption == "选择")
continue;
gc.Add(gvMain.Columns[i]);
}
cbSearch.DataSource = gc;
cbSearch.DisplayMember = "Caption";
cbSearch.ValueMember = "FieldName";
gvMain.CustomDrawRowIndicator += new RowIndicatorCustomDrawEventHandler(gvMain_CustomDrawRowIndicator);
gvMain.RowCellClick += new RowCellClickEventHandler(gvMain_RowCellClick);
gvMain.IndicatorWidth = 35;
if (!IsMultiple)
{
int result = gvMain.LocateByValue(TextField, ReturnText, null);
if (result >= 0)
{
gvMain.SelectRow(result);
}
}
else
{
for (int i = 0; i < RText.Count; i++)
{
int result = gvMain.LocateByValue(TextField, RText[i], null);
if (result >= 0)
{
DataRow dr = gvMain.GetDataRow(result);
dr["Id"] = true;
dr.AcceptChanges();
}
}
}
}
/// <summary>
/// 生成行号
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gvMain_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e)
{
e.Appearance.TextOptions.HAlignment = HorzAlignment.Center;
if (e.Info.IsRowIndicator)
{
if (e.RowHandle >= 0)
{
e.Info.DisplayText = (e.RowHandle + 1).ToString();
}
}
}
/// <summary>
/// 设置grid 列
/// </summary>
public void SetColumns(DataTable dt)
{
gvMain.Columns.Clear();
//if (IsMultiple)
//{
// DataColumn dc = new DataColumn()
// {
// Caption = "选择",
// DataType = typeof(bool),
// ColumnName = "Id",
// DefaultValue = false
// };
// dt.Columns.Add(dc);
// dt.AcceptChanges();
// GridColumn gridColumnCheckBox = new GridColumn();
// gridColumnCheckBox.FieldName = "Id";
// gridColumnCheckBox.Name = "Id";
// gridColumnCheckBox.Caption = "选择";
// gridColumnCheckBox.Width = 40;
// gridColumnCheckBox.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
// gridColumnCheckBox.Visible = true;
// gvMain.Columns.Add(gridColumnCheckBox);
//}
foreach (var col in Columns.Keys)
{
GridColumn gridColumn = new GridColumn();
gridColumn.FieldName = col;
gridColumn.Name = col;
gridColumn.Caption = Columns[col];
gridColumn.Width = 200;
gridColumn.Visible = true;
gridColumn.OptionsColumn.AllowEdit = false;
gridColumn.OptionsColumn.ReadOnly = false;
gvMain.Columns.Add(gridColumn);
gvMain.Appearance.HeaderPanel.TextOptions.HAlignment = HorzAlignment.Center;
}
}
/// <summary>
/// 行点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void gvMain_RowCellClick(object sender, RowCellClickEventArgs e)
{
//if (IsMultiple)
//{
// DataRow row = gvMain.GetDataRow(e.RowHandle);
// string id = row["Id"] + "";
// if (id.IndexOf("true", StringComparison.OrdinalIgnoreCase) != -1)
// {
// row["Id"] = false;
// }
// else
// {
// row["Id"] = true;
// }
//}
}
/// <summary>
/// 搜索数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSearch_Click(object sender, EventArgs e)
{
string filedName = cbSearch.SelectedValue + "";
string filedText = txtKey.Text;
if (!string.IsNullOrEmpty(filedName))
{
string mysql = "select * from (" + SQL + ") as tab where " + filedName + " like '%" + filedText + "%' or dbo.p_getpy(" + filedName + ") like '%" + filedText + "%'";
DataTable dt = SqlHelper.ExecuteDataSet(mysql).Tables[0];
//SetColumns(dt);
gridMain.DataSource = dt;
}
}
/// <summary>
/// 关闭窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnClose_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.No;
}
/// <summary>
/// 确定-关闭
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSave_Click(object sender, EventArgs e)
{
if (IsMultiple)
{
ReturnValue = "";
ReturnText = "";
DataTable dt = gridMain.DataSource as DataTable;
foreach (DataRow row in dt.Rows)
{
string msg = row["Id"] + "";
if (msg.IndexOf("true", StringComparison.OrdinalIgnoreCase) != -1)
{
ReturnValue += row[ValueField] + ",";
ReturnText += row[TextField] + ",";
}
}
}
else
{
int[] rows = gvMain.GetSelectedRows();
if (rows.Length > 0)
{
DataRow row = gvMain.GetDataRow(rows[0]);
ReturnValue += "'" + row[ValueField] + "',";
ReturnText += row[TextField] + ",";
}
}
if (!string.IsNullOrEmpty(ReturnValue))
{
ReturnValue = ReturnValue.Trim(',');
}
if (!string.IsNullOrEmpty(ReturnText))
{
ReturnText = ReturnText.Trim(',');
}
this.DialogResult = DialogResult.OK;
}
private void gvMain_RowCellStyle(object sender, RowStyleEventArgs e)
{
}
}
}