⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dealpanel.cs

📁 社区管理系统
💻 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 + -