📄 dealpanel.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DataBaseManagerLibrary;
namespace DealPanel
{
public partial class DealPanel : UserControl
{
private DataBaseManager DBManager;
private Int64 dealID, insertDealID;
private int selectedIndex;
public DealPanel(){
InitializeComponent();
//String SqlConnectInfo = "server=localhost;database=CommnityManagementSystem;uid=sa;pwd=''";
//DBManager = new DataBaseManager(SqlConnectInfo);
reset();
}
private void bSearch_Click(object sender, EventArgs e)
{
String cmd;
if (checkInput("Select") == false) return; //用户输入不合法
cmd = generateSelectCommand(); //根据输入情况生成相应的命令
DataTable dataTable = DBManager.ExecuteSelectCommand(cmd);
if (dataTable == null)
{ //数据库出错
MessageBox.Show(DBManager.errorMessage);
return;
}
else if (dataTable.Rows.Count == 0)
{//没有搜索到对应信息,显示一个空的DataGridView
dataGridView.DataSource = dataTable;
return;
}
else
{//至少找到一条信息,将信息显示到DataGridView,并将第一条信息详细列出
dataGridView.DataSource = dataTable;
showDetailInfo(0);
}
}
public void visilize()
{
reset(); //将各个控件置为初始状态
this.Visible = true;
}
public void disVisilize()
{
this.Visible = false;
}
public void setDataBaseManager(DataBaseManager DBManager)
{
this.DBManager = DBManager;
}
private bool ErrorMessage(String msg)
{
MessageBox.Show(msg);
return false;
}
private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
{
MessageBox.Show(e.RowIndex+"");
if (e.RowIndex == -1 || e.RowIndex >= dataGridView.Rows.Count - 1) return; //选择多行或选择列标签
showDetailInfo(e.RowIndex);
selectedIndex = e.RowIndex;
}
private void bDelete_Click(object sender, EventArgs e)
{
String cmd = generateDeleteCommand();
int affectRows = DBManager.Execute(cmd);
if (affectRows == -1)
{ //数据库出错
MessageBox.Show(DBManager.errorMessage);
return;
}
else if (affectRows == 0)
{
MessageBox.Show("此数据已被其他登陆用户删除");
}
if (selectedIndex == dataGridView.Rows.Count - 2)
{
dataGridView.Rows.Remove(dataGridView.Rows[selectedIndex]);
selectedIndex--;
if (selectedIndex == -1)
{//若DataGridView没有数据则重置界面
reset();
return;
}
}
else dataGridView.Rows.Remove(dataGridView.Rows[selectedIndex]);
showDetailInfo(selectedIndex);
}
///////////////////////////////////////////////////////////////////////////////////
private void bAdd_Click(object sender, EventArgs e)
{
String cmd;
if (checkInput("Insert") == false) return;//用户输入错误
cmd = generateSelectCommand(); //首先查找数据库中有没有相同内容的行
DataTable dataTable = DBManager.ExecuteSelectCommand(cmd);
if (dataTable == null)
{ //数据库出错
MessageBox.Show(DBManager.errorMessage);
return;
}
else if (dataTable.Rows.Count > 0)
{
MessageBox.Show("数据库中已存在相同信息");
return;
}
//将信息添加到数据库
cmd = generateInsertCommand(); //根据输入情况生成相应的命令
int affectedRows = DBManager.Execute(cmd);
if (affectedRows == -1)
{ //数据库出错
MessageBox.Show(DBManager.errorMessage);
return;
}
else if (affectedRows == 0)
{//
MessageBox.Show("插入失败");
return;
}
else
{//插入成功,
showDetailInfo(selectedIndex);//显示插入前的一行
/*DataRow row = new DataRow();
row.set
row.ItemArray={insertDealID,tbName.Text};
DataGridViewCell[] cell = new DataGridViewCell[6];
for (int i = 0; i < 6; i++) cell[i] = new DataGridViewCell();
row.Cells = cell;
row.Cells[0].Value=insertDealID;
row.Cells[1].Value=tbName.Text;
row.Cells[2].Value=cbSex.Text;
row.Cells[3].Value=int.Parse(tbAge.Text);
row.Cells[4].Value=tbWork.Text;
row.Cells[5].Value=cbPreferedCategory.Text;
row.Cells[6].Value=tbPreferedArea.Text;
dataGridView.Rows.Add(row);
int idx = dataGridView.Rows.IndexOf(row);
selectedIndex = idx;
showDetailInfo(idx);
*/
}
}
private void reset()
{
dealID = 0;
selectedIndex = -1;
bModify.Enabled = false;
bDelete.Enabled = false;
tbName.Text = ""; //清空TextBox及ComboBox
tbAddress.Text = "";
cbCategory.Text = "";
cbClass.Text = "";
tbContent.Text = "";
}
private void bModify_Click(object sender, EventArgs e)
{
String cmd;
if (checkInput("Modify") == false) return; //用户输入不合法
cmd = generateUpdateCommand(); //根据输入情况生成相应的命令
int affectRows = DBManager.Execute(cmd);
if (affectRows == -1)
{ //数据库出错
MessageBox.Show(DBManager.errorMessage);
return;
}
else if (affectRows == 0)
{//没有搜索到对应信息
MessageBox.Show("信息可能已被其他用户删除");
return;
}
else
{//成功修改,更新DataGridView
MessageBox.Show(selectedIndex+" * "+dataGridView.Rows.Count);
DataGridViewRow row = dataGridView.Rows[selectedIndex];
row.Cells["姓名"].Value = tbName.Text;
row.Cells["交易类型"].Value = cbCategory.Text;
row.Cells["需求1"].Value = cbClass.Text;
row.Cells["联系地址"].Value = tbAddress.Text;
row.Cells["描述"].Value = tbContent.Text;
}
}
private void showDetailInfo(int idx)
{
if (idx < 0) return;
selectedIndex = idx;
dealID = (Int64)dataGridView.Rows[idx].Cells["交易编号"].Value;//得到用户选择的行的主键
DataTable dt = DBManager.ExecuteSelectCommand(String.Format("select * from 交易信息 where 交易编号='{0}'", dealID));
if (dt == null)
{//数据库错误
MessageBox.Show(DBManager.errorMessage);
dealID = 0;
return;
}
else if (dt.Rows.Count == 0)
{ //未找到此记录
MessageBox.Show("此记录可能已被其他用户删除");
dealID = 0;
return;
}
tbName.Text = (String)dt.Rows[0]["姓名"];
cbCategory.Text = (String)dt.Rows[0]["交易类型"];
cbClass.Text = (String)dt.Rows[0]["需求1"];
tbContent.Text = (String)dt.Rows[0]["描述"];
tbAddress.Text = (String)dt.Rows[0]["联系地址"];
bModify.Enabled = true;//此时可以操作修改、删除数据
bDelete.Enabled = true;
}
private bool checkInput(String str)
{
tbName.Text = tbName.Text.Trim(); //将多余的空格去掉
cbClass.Text = cbClass.Text.Trim();
cbCategory.Text = cbCategory.Text.Trim();
tbAddress.Text = tbAddress.Text.Trim();
tbContent.Text = tbContent.Text.Trim();
if (str == "Insert" || str == "Modify")
{//以下是在更新或插入时检查输入是否为空
if (tbName.Text == "") return ErrorMessage("姓名为空");
if (cbClass.Text == "") return ErrorMessage("销售物品种类为空");
if (cbCategory.Text == "") return ErrorMessage("租售类型为空");
if (tbContent.Text == "") return ErrorMessage("租售内容为空");
if (tbAddress.Text == "") return ErrorMessage("联系地址为空");
}
if (cbCategory.Text != "") {
String s=cbCategory.Text;
if (s != "出售" && s != "购进" && s != "出租" && s != "求租") return ErrorMessage("租售类型输入错误");
}
return true;
}
private String generateSelectCommand()
{
String cmds = "Select 交易编号,姓名,交易类型,需求1,联系地址,描述 from 交易信息 ";
String cmd = "";
bool cmdChanged = false;
if (tbName.Text != "") {
if (cmdChanged) cmd = cmd + " and 姓名='" + tbName.Text + "'";
else
{
cmdChanged = true;
cmd = cmd + "where 姓名='" + tbName.Text + "'";
}
}
if (cbClass.Text != "")
{
if (cmdChanged) cmd = cmd + " and 需求1='" + cbClass.Text + "'";
else
{
cmdChanged = true;
cmd = cmd + "where 需求1='" + cbClass.Text + "'";
}
}
if (cbCategory.Text != "")
{
if (cmdChanged) cmd = cmd + " and 交易类型='" + cbCategory.Text + "'";
else
{
cmdChanged = true;
cmd = cmd + "where 交易类型='" + cbCategory.Text + "'";
}
}
if (tbAddress.Text != "")
{
if (cmdChanged) cmd = cmd + " and 联系地址='" + tbAddress.Text + "'";
else
{
cmdChanged = true;
cmd = cmd + "where 联系地址='" + tbAddress.Text + "'";
}
}
if (tbContent.Text != "")
{
if (cmdChanged) cmd = cmd + " and 描述='" + tbContent.Text + "'";
else
{
cmdChanged = true;
cmd = cmd + "where 描述='" + tbContent.Text + "'";
}
}
//MessageBox.Show(cmds+cmd);
return cmds+cmd;
}
private String generateUpdateCommand()
{
String cmd = "";
cmd = String.Format("update 交易信息 set 姓名='{0}',交易类型='{1}',需求1='{2}',联系地址='{3}',描述='{4}'", tbName.Text, cbCategory.Text, cbClass.Text, tbAddress.Text, tbContent.Text);
cmd = cmd + String.Format(" where 交易编号='{0}'", dealID);
return cmd;
}
private String generateInsertCommand()
{
String cmd = "insert into 交易信息 values(";
Int64 id = DateTime.Now.ToBinary();
insertDealID = id;
cmd = cmd + String.Format("'{0}','{1}','{2}','','','','','',", id, cbCategory.Text,tbName.Text);
cmd = cmd + String.Format("'{0}','','','{1}','{2}','','')", cbClass.Text,tbContent.Text,tbAddress.Text);
return cmd;
}
private String generateDeleteCommand()
{
String cmd = String.Format("Delete from 交易信息 where 交易编号='{0}'", dataGridView.Rows[selectedIndex].Cells["交易编号"].Value);
return cmd;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -