AIMS/AIMS.UI/DataDictionary/frmChargSelect.cs
2023-08-13 21:05:09 +08:00

373 lines
13 KiB
C#

using AIMSBLL;
using AIMSExtension;
using AIMSModel;
using DrawGraph;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Windows.Forms;
namespace AIMS.PublicUI.UI
{
public partial class frmChargSelect : Form
{
/// <summary>
/// 可用的收费
/// </summary>
public DataTable dt;
/// <summary>
/// 已选择的收费
/// </summary>
public DataTable ydt;
/// <summary>
/// 当前页数
/// </summary>
int currentPage = 0;
/// <summary>
/// 总数
/// </summary>
int total = 0;
/// <summary>
/// 总页数
/// </summary>
int pages = 0;
public ChargsTemplate chargsTemplate;
public string DeptId;
public frmChargSelect()
{
InitializeComponent();
}
public frmChargSelect(int chargsTemplateId)
{
InitializeComponent();
chargsTemplate = BChargsTemplate.SelectSingle(chargsTemplateId);
if (chargsTemplate.TemplateType == "麻醉")
{
DeptId = "300001";
}
if (chargsTemplate.TemplateType == "护士")
{
DeptId = "300002";
}
}
private void frmApplianceSelect_Load(object sender, EventArgs e)
{
dgvD.AutoGenerateColumns = false;
dgvY.AutoGenerateColumns = false;
BindCharsDICT();
ydt = BCharges.GetChargsByCodes(chargsTemplate.ConnectId, chargsTemplate.DefaultValue);
BindDgvY(ydt);
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void BindDgvY(DataTable dt)
{
dgvY.AutoGenerateColumns = false;
dgvY.Rows.Clear();
foreach (DataRow dr in dt.Rows)
{
bool isOnly = true;
foreach (DataGridViewRow item1 in dgvY.Rows)
{
if (item1.Cells["yId"].Value.ToString() == dr["Id"].ToString())
{
isOnly = false;
}
}
if (isOnly == true)
{
int index = this.dgvY.Rows.Add();
this.dgvY.Rows[index].Cells["yId"].Value = dr["Id"].ToString();
this.dgvY.Rows[index].Cells["yName"].Value = dr["Name"].ToString() + " " + dr["Bill"].ToString();
this.dgvY.Rows[index].Cells["yCode"].Value = dr["Code"].ToString();
this.dgvY.Rows[index].Cells["yxmbm"].Value = dr["Code"].ToString();
string ITEMPRICE = dr["Price"].ToString();
try
{
if (ITEMPRICE != null && ITEMPRICE != "")
{
ITEMPRICE = Double.Parse(ITEMPRICE).ToString();
}
this.dgvY.Rows[index].Cells["price"].Value = ITEMPRICE;
}
catch (Exception)
{
}
this.dgvY.Rows[index].Cells["Number"].Value = dr["Number"].ToString();
}
}
}
private void BindDgv(DataTable dt)
{
dgvD.AutoGenerateColumns = false;
dgvD.Rows.Clear();
int num = 1;
foreach (DataRow dr in dt.Rows)
{
int index = this.dgvD.Rows.Add();
this.dgvD.Rows[index].Cells["Id"].Value = dr["Id"].ToString();
this.dgvD.Rows[index].Cells["Index"].Value = num;
num++;
this.dgvD.Rows[index].Cells["oName"].Value = dr["Name"].ToString() + " " + dr["Bill"].ToString(); ;
this.dgvD.Rows[index].Cells["oCode"].Value = dr["Code"].ToString();
this.dgvD.Rows[index].Cells["oxmbm"].Value = dr["Code"].ToString();
string ITEMPRICE = dr["Price"].ToString();
try
{
if (ITEMPRICE != null && ITEMPRICE != "")
{
ITEMPRICE = Double.Parse(ITEMPRICE).ToString();
}
this.dgvD.Rows[index].Cells["oPrice"].Value = ITEMPRICE;
}
catch (Exception)
{
}
}
}
private void BindCharsDICT()
{
currentPage = 0;
dt = BCharges.SelectByIdName("", DeptId);
SetPageText(dt);
BindDgv(GetTableByCurrentPage(currentPage, dt));
}
private void SetPageText(DataTable table)
{
total = table.Rows.Count;
if (total % 20 == 0)
{
pages = total / 20;
}
else
{
pages = total / 20 + 1;
}
lblPage.Text = currentPage + 1 + "/" + pages + ",共" + total + "条";
}
/// <summary>
/// 得到某页的DataTable
/// </summary>
/// <param name="currPage">当前页</param>
/// <param name="dt">获取数据的DataTable</param>
/// <returns>某一页的DataTable</returns>
private DataTable GetTableByCurrentPage(int currPage, DataTable dt)
{
DataTable pdt = dt.Clone();
int index = currPage * 20;
for (int i = index; i < index + 20; i++)
{
if (i == total)
{
break;
}
DataRow dr = pdt.NewRow();
dr["Id"] = dt.Rows[i]["ID"];
dr["Name"] = dt.Rows[i]["Name"].ToString();
dr["Code"] = dt.Rows[i]["Code"].ToString();
dr["xmbm"] = dt.Rows[i]["xmbm"].ToString();
dr["Price"] = dt.Rows[i]["Price"].ToString();
pdt.Rows.Add(dr);
}
return pdt;
}
private void txtQuery_TextChanged(object sender, EventArgs e)
{
dt = BCharges.SelectByIdName(txtQuery.Text, DeptId);
currentPage = 0;
SetPageText(dt);
BindDgv(GetTableByCurrentPage(currentPage, dt));
}
private void lkUp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
if (total == 0 || currentPage == 0)
{
return;
}
currentPage--;
SetPageText(dt);
BindDgv(GetTableByCurrentPage(currentPage, dt));
}
private void lkDown_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
if (total == 0 || (currentPage + 1) == pages)
{
return;
}
currentPage++;
SetPageText(dt);
BindDgv(GetTableByCurrentPage(currentPage, dt));
}
private void btnSelectAll_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow yRow in dgvY.Rows)
{
if (dgvD.CurrentRow.Cells["Id"].Value.ToString() == yRow.Cells["yId"].Value.ToString())
{
MessageBox.Show("已经选过了!", "系统提示");
return;
}
}
List<string> list = new List<string>();
list.Add(dgvD.CurrentRow.Cells["Id"].Value.ToString());
foreach (string id in list)
{
DataRow ydr = ydt.NewRow();
foreach (DataRow dr in dt.Rows)
{
if (dr["Id"].ToString() == id)
{
ydr["Id"] = dr["Id"].ToString();
ydr["Name"] = dr["Name"].ToString();
ydr["Code"] = dr["Code"].ToString();
ydr["Price"] = dr["Price"].ToString();
ydr["Number"] = "1";
ydt.Rows.Add(ydr);
break;
}
}
}
BindDgvY(ydt);
}
private void btnCancelAll_Click(object sender, EventArgs e)
{
List<string> list = new List<string>();
list.Add(dgvY.CurrentRow.Cells["yId"].Value.ToString());
foreach (string id in list)
{
foreach (DataRow dr in ydt.Rows)
{
if (dr["Id"].ToString() == id)
{
ydt.Rows.Remove(dr);
break;
}
}
}
BindDgvY(ydt);
}
private void btnSave_Click(object sender, EventArgs e)
{
List<string> list = new List<string>();
List<int> number = new List<int>();
foreach (DataGridViewRow row in dgvY.Rows)
{
list.Add(row.Cells["yId"].Value.ToString());
number.Add(Convert.ToInt32(row.Cells["Number"].Value));
}
string applianceId = string.Join("','", list.ToArray());
applianceId = "'" + applianceId + "'";
string _Number = string.Join(",", number.ToArray());
chargsTemplate.ConnectId = applianceId;
chargsTemplate.DefaultValue = _Number;
chargsTemplate.OperatorId = PublicMethod.OperatorId;
chargsTemplate.OperatorTime = DateTime.Now;
int num = BChargsTemplate.Update(chargsTemplate);
if (num > 0)
{
new frmMessageBox().Show();
this.Close();
}
}
private void dgvD_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
DataRow ydr = ydt.NewRow();
string id = dgvD.SelectedRows[0].Cells["Id"].Value.ToString();
foreach (DataRow row in ydt.Rows)
{
if (row["Id"].ToString() == id)
{
MessageBox.Show("已选择!", "系统提示");
return;
}
}
foreach (DataRow row in dt.Rows)
{
if (row["Id"].ToString() == id)
{
for (int i = 0; i < dt.Columns.Count; i++)
{
ydr["Id"] = row["Id"];
ydr["Name"] = row["Name"].ToString();
ydr["Code"] = row["Code"].ToString();
ydr["Price"] = row["Price"].ToString();
ydr["Number"] = "1";
}
ydt.Rows.Add(ydr);
break;
}
}
BindDgvY(ydt);
}
public DataGridViewTextBoxEditingControl dgvTxt = null; // 声明 一个文本 CellEdit
public DataGridViewTextBoxEditingControl dgvTxtName = null; // 声明 一个文本 CellEdit
private void dgvY_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
//判断类型
if (dgvY.CurrentCell != null)
{
if (dgvY.CurrentCell.ColumnIndex == 3)
{
dgvTxtName = (DataGridViewTextBoxEditingControl)e.Control; // 得到单元格
dgvTxtName.KeyPress -= new KeyPressEventHandler(dgvTxt_KeyPress); // 绑定事件
dgvTxtName.KeyPress += new KeyPressEventHandler(dgvTxt_KeyPress); // 绑定事件
}
}
}
void dgvTxt_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar < 48 || e.KeyChar > 57)
{
if (e.KeyChar != 46 && e.KeyChar != 8 && e.KeyChar != 13)
{
e.Handled = true;
}
}
TextBox tb = sender as TextBox;
if (e.KeyChar == 46)
{
int n = tb.Text.LastIndexOf(".");
if (n > 0) e.Handled = true;
}
}
private void dgvY_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
//List<string> list = new List<string>();
//list.Add(dgvY.CurrentRow.Cells["yId"].Value.ToString());
//for (int id = 0; id < list.Count; id++)
//{
// for (int i = ydt.Rows.Count - 1; i >= 0; i--)
// {
// if (ydt.Rows[i]["ChargCode"].ToString() == list[id])
// {
// ydt.Rows.Remove(ydt.Rows[i]);
// }
// }
//}
//dgvY.Rows.Remove(dgvY.CurrentRow);
}
private void txtQuery_Click(object sender, EventArgs e)
{
txtQuery.Text = "";
}
}
}