291 lines
9.4 KiB
C#
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)
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|