可以实现拼音,汉字,五笔检索
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Enjoyor.BLL.DrugsStorage;
using Enjoyor.Common.UC;
using Enjoyor.Common.Function;
using System.IO;
using System.Data.SqlClient;
using Enjoyor.UI.DrugsStorage.Report;
using DevExpress.XtraEditors;
namespace Enjoyor.UI.DrugsStorage
{
public partial class XtraUCDrugsinRepotr : ucBaseControl
{
private DevExpress.Utils.WaitDialogForm wdf;
private DM_druginoutTitleLine _DM_druginoutTitleLine = new DM_druginoutTitleLine();
private DateTime deSt;
private DateTime deEd;
private string IDyp = "";//检索药品ID
private string IDgs = "";//检索公司ID
private DrugSearchSP uc = null;
private DrugSearchSP uc1 = null;
private PopupContainerEdit pcc = null;
public XtraUCDrugsinRepotr()
{
InitializeComponent();
dateStart.Text = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
dateEnd.Text = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
}
private void btnSearch_Click(object sender, EventArgs e)
{
RefreshData();
}
/// <summary>
/// 数据生成
/// </summary>
private void RefreshData()
{
try
{
if (dateStart.DateTime == null || string.IsNullOrEmpty(dateStart.Text.Trim()))
{
MessageHelper.ShowTips("请选择开始时间!");
return;
}
if (dateEnd.DateTime == null || string.IsNullOrEmpty(dateEnd.Text.Trim()))
{
MessageHelper.ShowTips("请选择结束时间!");
return;
}
if (string.IsNullOrEmpty(dateEdit1.Text))
{
MessageHelper.ShowTips("请选择药库名称!");
return;
}
string deptid = "";
if (dateEdit1.Text.Contains("西药"))
{
deptid = "150";
}
else if (dateEdit1.Text.Contains("基药"))
{
deptid = "151";
}
else if (dateEdit1.Text.Contains("中药"))
{
deptid = "152";
}
deSt = DateTime.Parse(dateStart.DateTime.ToString("yyyy/MM/dd HH:mm:ss"));
deEd = DateTime.Parse(dateEnd.DateTime.ToString("yyyy/MM/dd HH:mm:ss"));
//base.ShowWaitDialog(ref wdf, WaitDialogType.Deal);
DataTable dt = _DM_druginoutTitleLine.Get_DM_druginoutTitle(deSt, deEd, IDyp, IDgs, checkGs.Checked, deptid);
gvDrugInOutTitleview(checkGs.Checked == false ? "" : checkGs.Checked.ToString(), checkGs.Checked);
gcDrugInOutTitle.DataSource = dt;
}
catch (Exception e)
{
throw e;
}
}
private void btnPrint_Click(object sender, EventArgs e)
{
DataTable dt = gcDrugInOutTitle.DataSource as DataTable;
if (dt == null)
{
return;
}
dt.Columns.Remove("id");
DataRow rw = dt.NewRow();
rw["realsent"] = dt.Compute("sum(realsent)", "").ToString();
rw["tprice"] = dt.Compute("sum(tprice)", "").ToString();
rw["tpunits"] = dt.Compute("sum(tpunits)", "").ToString();
rw["grgs"] = "合计";
dt.Rows.Add(rw);
dataTableToCsv(dt, "药库入库明细汇总报表.CSV");
RefreshData();
}
#region 将DataTable内容导出导csv文件
public static void dataTableToCsv(DataTable table, string file)
{
FileInfo fi = new FileInfo(file);
string path = dataTablezdy(file);//另存为
string name = fi.Name;
//\/:*?"<>|
//把文件名和路径分别取出来处理
name = name.Replace(@"\", "\");
name = name.Replace(@"/", "/");
name = name.Replace(@":", ":");
name = name.Replace(@"*", "*");
name = name.Replace(@"?", "?");
name = name.Replace(@"<", "<");
name = name.Replace(@">", ">");
name = name.Replace(@"|", "|");
string title = "";
FileStream fs = new FileStream(path + "\\" + name, FileMode.Create);
StreamWriter sw = new StreamWriter(new BufferedStream(fs), System.Text.Encoding.Default);
for (int i = 0; i < table.Columns.Count; i++)
{
switch (table.Columns[i].ColumnName)
{
case "drcode":
table.Columns[i].ColumnName = "药品编码";
break;
case "drname":
table.Columns[i].ColumnName = "名称";
break;
case "drmodel":
table.Columns[i].ColumnName = "药品规格";
break;
case "packunit":
table.Columns[i].ColumnName = "包装单位";
break;
case "dilotn":
table.Columns[i].ColumnName = "批号";
break;
case "drmanf":
table.Columns[i].ColumnName = "厂家";
break;
case "npp":
table.Columns[i].ColumnName = "进价";
break;
case "realsent":
table.Columns[i].ColumnName = "数量";
break;
case "mzhs":
table.Columns[i].ColumnName = "门诊换算系数";
break;
case "zyhs":
table.Columns[i].ColumnName = "住院换算系数";
break;
case "sqh":
table.Columns[i].ColumnName = "单据号";
break;
case "grgs":
table.Columns[i].ColumnName = "购货公司";
break;
case "tprice":
table.Columns[i].ColumnName = "零售总价";
break;
case "tpunits":
table.Columns[i].ColumnName = "进价总价";
break;
case "pack":
table.Columns[i].ColumnName = "包装规格";
break;
case "drunit":
table.Columns[i].ColumnName = "最小单位";
break;
}
title += table.Columns[i].ColumnName + ",";
}
title = title.Substring(0, title.Length - 1) + "\n";
sw.Write(title);
foreach (DataRow row in table.Rows)
{
string line = "";
for (int i = 0; i < table.Columns.Count; i++)
{
line += row[i].ToString().Replace(",", "") + ",";
}
if (line.Contains("\n") || line.Contains("\r"))
{
line = line.Replace("\r", "").Replace("\n", "");
}
line = line.Substring(0, line.Length - 1) + "\n";
sw.Write(line);
}
sw.Close();
fs.Close();
}
private static string dataTablezdy(string file)
{
string filetext = "";
SaveFileDialog x = new SaveFileDialog();
x.FileName = file;
x.Filter = "所有文件(*.*)|*.*";
if (x.ShowDialog() == DialogResult.OK)
{
string filelocal = x.FileName.ToString();
filetext = filelocal.Substring(0, filelocal.LastIndexOf("\\"));
}
else
{
FileInfo fi = new FileInfo(file);
filetext = fi.DirectoryName;
}
return filetext;
}
#endregion
private void gvDrugInOutTitle_DoubleClick(object sender, EventArgs e)
{
if (gvDrugInOutTitle.DataSource == null || gvDrugInOutTitle.FocusedRowHandle < 0)
{
return;
}
string Idyp = "";
string Idgs = "";
try
{
Idgs = gvDrugInOutTitle.GetRowCellValue(gvDrugInOutTitle.FocusedRowHandle, "id").ToString();
Idyp = gvDrugInOutTitle.GetRowCellValue(gvDrugInOutTitle.FocusedRowHandle, "drcode").ToString();
}
catch
{
}
string deptid = "";
if (dateEdit1.Text.Contains("西药"))
{
deptid = "150";
}
else if (dateEdit1.Text.Contains("基药"))
{
deptid = "151";
}
else if (dateEdit1.Text.Contains("中药"))
{
deptid = "152";
}
bool flag = false;
flag = gvDrugInOutTitleview(Idyp, flag);
DataTable dt = _DM_druginoutTitleLine.Get_DM_druginoutTitle(deSt, deEd, Idyp, Idgs, flag, deptid);
gcDrugInOutTitle.DataSource = dt;
}
/// <summary>
/// 操纵列显示
/// </summary>
/// <param name="Idyp"></param>
/// <param name="flag"></param>
/// <returns></returns>
private bool gvDrugInOutTitleview(string Idyp, bool flag)
{
if (!string.IsNullOrEmpty(Idyp))
{
flag = true;
for (int i = 0; i < this.gvDrugInOutTitle.Columns.Count; i++)
{
switch (i)
{
case 8:
break;
case 9:
break;
case 10:
break;
case 14:
gvDrugInOutTitle.Columns[i].VisibleIndex = 0;
break;
default:
gvDrugInOutTitle.Columns[i].Visible = false;
break;
}
}
}
else
{
for (int i = 0; i < this.gvDrugInOutTitle.Columns.Count; i++)
{
gvDrugInOutTitle.Columns[i].Visible = true;
}
}
return flag;
}
private void simpleButton2_Click(object sender, EventArgs e)
{
DataTable dt = gcDrugInOutTitle.DataSource as DataTable;
if (dt.Columns.Count > 5)
{
MessageHelper.ShowTips("只能打印汇总数据!");
return;
} if (dt.Rows.Count <= 0)
{
MessageHelper.ShowTips("该区间没有数据!");
return;
}
入库汇总_购入公司_ GrgsReport = new 入库汇总_购入公司_();
GrgsReport.PrintData(dt, Convert.ToString(deSt), Convert.ToString(deEd));
}
private void Edit_yp_EditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs e)
{
pcc = sender as PopupContainerEdit;
string strSearch = FilterSymbolStr(e.NewValue.ToString().Trim());
if (strSearch.Length > 0)
{
uc.Getdruginout(strSearch);
pcc.ShowPopup();
pcc.Focus();
}
else
{
pcc.ClosePopup();
}
if (string.IsNullOrEmpty(Edit_yp.Text))
{
IDyp = "";
}
}
private void XtraUCDrugsinRepotr_Load(object sender, EventArgs e)
{
#region 加载下拉框
PopupContainerControl pccWest = new PopupContainerControl();
PopupContainerControl pccWest1 = new PopupContainerControl();
Edit_yp.Properties.PopupControl = pccWest;
Edit_gs.Properties.PopupControl = pccWest1;
pccWest.Width = 400;
pccWest.Height = 300;
uc = new DrugSearchSP();
uc.Dock = DockStyle.Fill;
uc.getRow += new DrugSearchSP.GetRow(Search);
pccWest.Controls.Add(uc);
pccWest1.Width = 400;
pccWest1.Height = 300;
uc1 = new DrugSearchSP();
uc1.Dock = DockStyle.Fill;
uc1.getRow += new DrugSearchSP.GetRow(Search);
pccWest1.Controls.Add(uc1);
#endregion
}
#region 下拉框选中赋值,调取药品列表
private void Search(DataRow dr)
{
if (dr == null)
{
return;
}
int i = 0;
bool flag = int.TryParse(dr["DRCODE"].ToString(), out i);
if (flag)
{
Edit_gs.Text = dr["COMPANY"].ToString().Trim();
IDgs = dr["DRCODE"].ToString().Trim();
}
else
{
Edit_yp.Text = dr["DRNAME"].ToString().Trim();
IDyp = dr["DRCODE"].ToString().Trim();
}
pcc.ClosePopup();
}
#endregion
private void Edit_yp_KeyPress(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar >= 48 && e.KeyChar <= 57)
|| (e.KeyChar >= 65 && e.KeyChar <= 90)
|| (e.KeyChar >= 97 && e.KeyChar <= 122)
|| e.KeyChar == 127
|| e.KeyChar == 8)
{
e.Handled = false;
}
else
{
e.Handled = true;
}
}
#region 过滤特殊字符
public static string FilterSymbolStr(string theString)
{
string[] aryReg = { "'", "\"", "\r", "\n", "<", ">", "%", "?", ",", ".", "=", "-", "_", ";", "|", "[", "]", "&", "/" };
for (int i = 0; i < aryReg.Length; i++)
{
theString = theString.Replace(aryReg[i], string.Empty);
}
return theString;
}
#endregion
private void Edit_gs_EditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs e)
{
pcc = sender as PopupContainerEdit;
string strSearch = FilterSymbolStr(e.NewValue.ToString().Trim());
if (strSearch.Length > 0)
{
uc1.GetCompany(strSearch);
pcc.ShowPopup();
pcc.Focus();
}
else
{
pcc.ClosePopup();
}
if (string.IsNullOrEmpty(Edit_gs.Text))
{
IDgs = "";
}
}
private void Edit_gs_KeyPress(object sender, KeyPressEventArgs e)
{
Edit_yp_KeyPress(this, e);
}
}
}
以上是应用,下面是检索窗体
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Enjoyor.Common.UC;
using Enjoyor.BLL.DrugsStorage;
using Enjoyor.Domain.Entities;
using DevExpress.XtraGrid.Columns;
namespace Enjoyor.UI.DrugsStorage
{
public partial class DrugSearchSP : UserControl
{
public DrugSearchSP()
{
InitializeComponent();
dtDrugUnit = _bllPub.GetDataFromLocal<Dict_drugunit>("Dict_drugunit", false);
}
DM_QYKCQuery QYKCQuery = new DM_QYKCQuery();
private Enjoyor.BLL.PublicMedthodBLL _bllPub = new BLL.PublicMedthodBLL();
public delegate void GetRow(DataRow dr);
public event GetRow getRow;
private string flag;
private DataTable dtDrugUnit = null;
private DM_company Company = new DM_company();
#region 按传递条件查询相关药品数据
public void GetVDihNew(string str_deptId, string str_key)
{
try
{
DataRow[] dr = QYKCQuery.GetDihtime(str_deptId, 0).Select("drname like '%" + str_key + "%' or drcode like '%" + str_key + "%' or drsearch11 like '%" + str_key + "%' or drsearch22 like '%" + str_key + "%'");
DataTable dt = ToDataTable(dr);
dt.Columns.Add("PACKUNITNM", typeof(string));
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow[] drUnit = dtDrugUnit.Select("CODE='" + dt.Rows[i]["PACKUNIT"].ToString().Trim() + "'");
if (drUnit != null && drUnit.Length > 0)
{
dt.Rows[i]["PACKUNITNM"] = drUnit[0]["UNITNAME"];
}
}
}
gcDrugs.DataSource = dt;
gcDrugs.Focus();
}
catch { }
}
#endregion
#region 按传递条件查询相关药品数据
public void Getdruginout(string str_key)
{
try
{
DataTable dt = new DM_drugs().GetDrugsMany(str_key);
dt=dt.DefaultView.ToTable(true, "DRCODE","DRNAME");
foreach (GridColumn item in gvDrugs.Columns)
{
switch (item.ToString())
{
case "编码":
item.Visible = true;
break;
case "药品名称":
item.Visible = true;
break;
default:
item.Visible = false;
break;
}
}
gcDrugs.DataSource = dt;
gcDrugs.Focus();
}
catch{
gcDrugs.DataSource = null;
}
}
#endregion
#region 按传递条件查询相关厂商数据
public void GetCompany(string str_key)
{
try
{
DataTable dt = Company.Getcompany(str_key);
foreach (GridColumn item in gvDrugs.Columns)
{
switch (item.ToString())
{
case "编码":
item.Visible = true;
break;
case "厂商":
item.Visible = true;
break;
default:
item.Visible = false;
break;
}
}
gcDrugs.DataSource = dt;
gcDrugs.Focus();
}
catch
{
gcDrugs.DataSource = null;
}
}
#endregion
#region DataRow[]转换DataTable
/// <summary>
/// DataRow[]转换DataTable
/// </summary>
/// <param name="rows">DataRow[]</param>
/// <returns>return DataTable</returns>
private DataTable ToDataTable(DataRow[] rows)
{
if (rows == null || rows.Length == 0) return null;
DataTable tmp = rows[0].Table.Clone(); // 复制DataRow的表结构
foreach (DataRow row in rows)
{
tmp.Rows.Add(row.ItemArray); // 将DataRow添加到DataTable中
}
return tmp;
}
#endregion
private void gvDrugs_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
ReturnData();
}
}
private void gvDrugs_DoubleClick(object sender, EventArgs e)
{
ReturnData();
}
public void ReturnData()
{
if (gcDrugs.DataSource != null && gvDrugs.FocusedRowHandle >= 0)
{
DataRow dr = gvDrugs.GetDataRow(gvDrugs.FocusedRowHandle);
if (getRow != null)
{
getRow(dr);
}
}
}
}
}