DevExpress_增删改查小Demo

效果如下:


实现功能如下:

1. 登录验证(含自动登录)

2. 列表展示

3. 删除记录

4. 新增记录

5. 修改记录


用到的控件和技术如下:

扫描二维码关注公众号,回复: 5009655 查看本文章

1. 登录界面布局(使用LayoutControl + 容器GroupBox + TextEdit + SimpleButton)

2. 启动时判断是否之前登录过,如果登录过,直接进入列表界面

3. 登录成功后跳转(并保存登录状态到缓存中)

4. GridControl中的GridView列表数据源绑定(使用数据源配置向导绑定db5库中的Girl表)


5. GridControl控件上右击,弹出菜单中选择Run Designer,

    来到设计界面,设置属性Repository (In-place EditorRepository),

    添加两个行内的操作:删除和修改,如下图所示:

6. 实现行内删除点击事件(闪电)

7. 在删除的点击事件中,获取当前用户点击的行号

8. 连接数据库执行删除操作,并更新GridView界面


9. 点击界面上的新增按钮,弹出新增界面,

    并等待新增界面返回的DialogResult,如果是OK,则刷新列表

10. 使用LayoutControl布局 新增界面,

      监听点击事件,判断非空条件,连接数据库,完成添加操作

      设置返回值DialogResult为OK,最后Close新增界面


11. 点击行内的修改按钮,获取用户点击的行的记录的ID

      赋值修改界面,并启动修改界面

12. 修改界面根据ID查询数据库,回显数据到界面

13. 修改界面点击保存按钮, 进行非空检测,并写入数据库,

      最后设置DialogResult为OK,关闭修改界面


项目结构如下:


Github下载代码:

https://github.com/ixixii/DevExpress_CRUD_Demo


完整代码如下:

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using DevExpress.UserSkins;
using DevExpress.Skins;
using DevExpress.LookAndFeel;
using System.IO;

namespace DXApplication_1
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            BonusSkins.Register();
            SkinManager.EnableFormSkins();
            UserLookAndFeel.Default.SetSkinStyle("DevExpress Style");
            // read login state
            if (File.Exists("login.txt")) {
                var savedStr = File.ReadAllText("login.txt");
                if (savedStr == "HasLogin")
                {
                    Application.Run(new GirlListForm());
                    return;
                }
            }
            
            LoginForm loginForm = new LoginForm();
            loginForm.ShowDialog();
            if (loginForm.DialogResult == DialogResult.OK) {
                Application.Run(new GirlListForm());
            }
        }
    }
}

LoginForm.cs代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.IO;

namespace DXApplication_1
{
    public partial class LoginForm : DevExpress.XtraEditors.XtraForm
    {
        public LoginForm()
        {
            InitializeComponent();
        }

        private void simpleButton1_Click(object sender, EventArgs e)
        {
            var userName = textEdit1.EditValue.ToString();
            var password = textEdit2.EditValue.ToString();
            if (userName == "beyond" && password =="123456") {
                // save login state
                File.AppendAllText("login.txt", "HasLogin");

                this.DialogResult = DialogResult.OK;
                this.Close();
            }
            else {
                MessageBox.Show("username or password is wrong");    
            }
            
        }

        private void LoginForm_Load(object sender, EventArgs e)
        {

        }
    }
}

GirlListForm.cs代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.IO;
using DevExpress.XtraGrid.Columns;
using System.Data.SqlClient;

namespace DXApplication_1
{
    public partial class GirlListForm : DevExpress.XtraEditors.XtraForm
    {
        public GirlListForm()
        {
            InitializeComponent();
            // This line of code is generated by Data Source Configuration Wizard
            // Fill a SqlDataSource
            sqlDataSource1.Fill();
        }

        private void GirlForm_Load(object sender, EventArgs e)
        {
            // delete column
            GridColumn delColumn = new GridColumn();
            delColumn.Caption = "Delete";
            delColumn.Visible = true;
            delColumn.ColumnEdit = repositoryItemHyperLinkDel;
            gridView1.Columns.Add(delColumn);

            delColumn.VisibleIndex = 4;
            gridView1.BestFitColumns();

            // edit column
            GridColumn editColumn = new GridColumn();
            editColumn.Caption = "Edit";
            editColumn.Visible = true;
            editColumn.ColumnEdit = repositoryItemHyperLinkEdit;
            gridView1.Columns.Add(editColumn);
            editColumn.VisibleIndex = 5;
            gridView1.BestFitColumns();
        }

        private void gridControl1_Click(object sender, EventArgs e)
        {

        }
        // logout Btn Clicked
        private void simpleButton1_Click(object sender, EventArgs e)
        {
            File.Delete("login.txt");
            LoginForm loginForm = new LoginForm();
            loginForm.ShowDialog();
            this.Close();
        }

        // delete column clicked
        private void repositoryItemHyperLinkDel_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Confirm Deletion?","vwhm.net",MessageBoxButtons.OKCancel)==DialogResult.OK)
            {
                // Get Selected Row
                int[] selectedRows = gridView1.GetSelectedRows();
                int selectedIndex = selectedRows[0];
                var idStr = gridView1.GetRowCellValue(selectedIndex, "ID");

                // write sql,  Server=DESKTOP-1G3JHJP;
                var connStr = "server=.;database=db5;Integrated Security=true;";
                SqlConnection conn = new SqlConnection(connStr);
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "delete from Girl where ID = @ID";
                cmd.Parameters.Clear();
                cmd.Parameters.Add("@ID", idStr);
                conn.Open();
                cmd.ExecuteNonQuery();
                cmd.Dispose();
                conn.Close();
                // refresh data source
                sqlDataSource1.Fill();
            }
        }
        // refresh button clicked
        private void simpleButton3_Click(object sender, EventArgs e)
        {
            // gridControl1.DataSource = list;
            // gridView1.RefreshData();
            sqlDataSource1.Fill();
        }

        // add Btn Clicked
        private void simpleButton2_Click(object sender, EventArgs e)
        {
            // 弹出窗体,新增,保存,刷新
            GirlAddForm addForm = new GirlAddForm();
            addForm.ShowDialog();
            if (addForm.DialogResult == DialogResult.OK) {
                sqlDataSource1.Fill();
            }
        }

        // edit column clicked
        private void repositoryItemHyperLinkEdit_Click(object sender, EventArgs e)
        {
            // get selected Row : ID Age Name
            int[] selectedRows = gridView1.GetSelectedRows();
            int selectedIndex = selectedRows[0];
            var idStr = gridView1.GetRowCellValue(selectedIndex, "ID");
            // bind Data to Edit Form
            // 弹出窗体, Modify,保存,刷新
            GirlEditForm editForm = new GirlEditForm();
            editForm.ID = idStr.ToString();
            editForm.ShowDialog();
            // Wait Edit Form DialogResult and Refresh GridView
            if (editForm.DialogResult == DialogResult.OK)
            {
                sqlDataSource1.Fill();
            }
            
        }
    }
}

GirlAddForm.cs代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Data.SqlClient;

namespace DXApplication_1
{
    public partial class GirlAddForm : DevExpress.XtraEditors.XtraForm
    {
        public GirlAddForm()
        {
            InitializeComponent();
        }
        // Cancel Btn Clicked
        private void simpleButton2_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        // Add Btn Clicked
        private void simpleButton1_Click(object sender, EventArgs e)
        {
            // get input 
            if (textEdit1_name.EditValue == null || textEdit2_age.EditValue == null)
            {
                MessageBox.Show("Empty Not Allowed");
                return;
            }
            var girlName = textEdit1_name.EditValue.ToString();
            var girlAge = textEdit2_age.EditValue.ToString();
            if (String.IsNullOrEmpty(girlName) || String.IsNullOrEmpty(girlAge)) {
                MessageBox.Show("Empty Not Allowed");
                return;
            }
            // insert db
            // write sql,  Server=DESKTOP-1G3JHJP;
            var connStr = "server=.;database=db5;Integrated Security=true;";
            SqlConnection conn = new SqlConnection(connStr);
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "insert into Girl values (@Name,@Age)";
            cmd.Parameters.Clear();
            cmd.Parameters.Add("@Name", girlName);
            cmd.Parameters.Add("@Age", girlAge);
            conn.Open();
            cmd.ExecuteNonQuery();
            cmd.Dispose();
            conn.Close();
            // close form and tell parent to refresh 
            this.DialogResult = DialogResult.OK;
            this.Close();
        }

        private void GirlAddForm_Load(object sender, EventArgs e)
        {

        }
    }
}

GirlEditForm.cs代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Data.SqlClient;

namespace DXApplication_1
{
    public partial class GirlEditForm : DevExpress.XtraEditors.XtraForm
    {
        public string ID { get; set; }
        public GirlEditForm()
        {
            InitializeComponent();
        }

        private void simpleButton1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void GirlEditForm_Load(object sender, EventArgs e)
        {
            // connect to sql
            var connStr = "server=.;database=db5;Integrated Security=true;";
            SqlConnection conn = new SqlConnection(connStr);
            // select by idstr
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "select ID,Name,Age from Girl where ID=@ID";
            cmd.Parameters.Clear();
            cmd.Parameters.Add("@ID", this.ID);
            conn.Open();
            //------------------
            SqlDataReader reader = cmd.ExecuteReader();
            if (reader.HasRows) {
                while (reader.Read()) {
                    // bind value
                    textEdit1.EditValue = reader["ID"].ToString();
                    textEdit2.EditValue = reader["Name"].ToString();
                    textEdit3.EditValue = reader["Age"].ToString();
                }
            }
            //------------------
            cmd.Dispose();
            conn.Close();
        }

        private void simpleButton2_Click(object sender, EventArgs e)
        {
            // connect to sql
            var connStr = "server=.;database=db5;Integrated Security=true;";
            SqlConnection conn = new SqlConnection(connStr);
            // select by idstr
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "update Girl set Name = @Name,Age = @Age where ID=@ID";
            cmd.Parameters.Clear();
            cmd.Parameters.Add("@ID", this.ID);
            cmd.Parameters.Add(@"Name", textEdit2.EditValue);
            cmd.Parameters.Add(@"Age", textEdit3.EditValue);
            conn.Open();
            //------------------
            cmd.ExecuteNonQuery();
            //------------------
            // close form and tell parent to refresh 
            this.DialogResult = DialogResult.OK;
            this.Close();
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/springsnow/p/10298975.html