• 测试成功的窗体应用[批量新增、删除、保存]



    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;
    using System.Windows.Forms;
    using System.Drawing;

    namespace RZGY
    {
        
    class LinkDB
        {
            
    private SqlConnection sqlCONN = new SqlConnection("server=.;database=rzgy;integrated security=sspi");
            
    private SqlDataAdapter sqlDA = null;
            
    private DataSet ds = new DataSet();
            
    private string sqlSelect = "";
            
    private SqlCommandBuilder sqlCMDBLD;
            
    /// <summary>
            
    /// 填充并返回数据集合
            
    /// </summary>
            
    /// <param name="sql"></param>
            
    /// <param name="tableName"></param>
            
    /// <returns></returns>
            public DataTable ExecuteSQLDataTable(string sql)
            {
                DataTable dt
    =new DataTable();
                sqlDA 
    = new SqlDataAdapter(sql, sqlCONN);
                sqlDA.Fill(dt);
                
    return dt;
            }

            
    public DataSet ExecuteSQLDataSet(string sqlTmp, string tableTableName)
            {
                sqlSelect 
    = sqlTmp;
                sqlDA 
    = new SqlDataAdapter(sqlSelect, sqlCONN);
                ds.Clear();
                sqlDA.Fill(ds, tableTableName);
                
    return ds;
            }

            
    /// <summary>
            
    /// 批量更新
            
    /// </summary>
            
    /// <param name="changedDS"></param>
            
    /// <param name="tableName"></param>
            
    /// <returns></returns>
            public int BatchUpdate(DataSet changedDS, string tableName)
            {
                
    int nums = 0;
                sqlDA 
    = new SqlDataAdapter(sqlSelect,sqlCONN);
                sqlCMDBLD 
    = new SqlCommandBuilder(sqlDA);
                sqlDA.InsertCommand 
    = sqlCMDBLD.GetInsertCommand();
                sqlDA.DeleteCommand 
    = sqlCMDBLD.GetDeleteCommand();
                sqlDA.UpdateCommand 
    = sqlCMDBLD.GetUpdateCommand();
                
    try
                {
                    
    lock (this)  //处理并发情况(分布式情况)
                    {
                        nums 
    = sqlDA.Update(changedDS, tableName);
                    }
                }
                
    catch(Exception Ex)
                {
                    MessageBox.Show(Ex.Message);
                }
                
    return nums;
            }

            
    /// <summary>
            
    /// 自定义DataGridView
            
    /// </summary>
            
    /// <param name="dataGridView"></param>
            public void CustomizeDataGridView(DataGridView dataGridView)
            {
                dataGridView.AllowUserToAddRows 
    = false;
                dataGridView.AutoGenerateColumns 
    = false;
                dataGridView.AlternatingRowsDefaultCellStyle.BackColor 
    = Color.Azure;
                dataGridView.RowTemplate.Resizable 
    = DataGridViewTriState.False;
                dataGridView.SelectionMode 
    = DataGridViewSelectionMode.FullRowSelect;
                dataGridView.EditMode 
    = DataGridViewEditMode.EditOnEnter;
                dataGridView.ColumnHeadersDefaultCellStyle.Alignment 
    = DataGridViewContentAlignment.MiddleCenter;

                
    for (int i = 0; i < dataGridView.ColumnCount; i++)
                {
                    dataGridView.Columns[i].ReadOnly 
    = true;
                    dataGridView.Columns[i].SortMode 
    = DataGridViewColumnSortMode.NotSortable; //不自动排序
                }
            }

            
    /// <summary>
            
    /// 给DataGridView添加行号
            
    /// </summary>
            
    /// <param name="sender"></param>
            
    /// <param name="e"></param>
            public void AddRowIndex(object sender, DataGridViewRowPostPaintEventArgs e)
            {
                SolidBrush s 
    = new SolidBrush(Color.Black);
                e.Graphics.DrawString(Convert.ToString(e.RowIndex 
    + 1), e.InheritedRowStyle.Font, s, e.RowBounds.X + 10, e.RowBounds.Y + 1);
            }

            
    /// <summary>
            
    /// 获取日期(格式:YYYY-MM-DD)
            
    /// </summary>
            
    /// <param name="DTP"></param>
            
    /// <param name="date"></param>
            
    /// <returns></returns>
            public string GetDate(DateTimePicker DTP, string date, string format)
            {
                
    if (format == "YYYY-MM-DD")
                {
                    
    if (DTP.Value.Month <= 9)
                    {
                        
    if (DTP.Value.Day <= 9)
                            date 
    = DTP.Value.Year.ToString() + "-0" + DTP.Value.Month.ToString() + "-0" + DTP.Value.Day.ToString();
                        
    else
                            date 
    = DTP.Value.Year.ToString() + "-0" + DTP.Value.Month.ToString() + "-" + DTP.Value.Day.ToString();
                    }
                    
    else
                    {
                        
    if (DTP.Value.Day <= 9)
                            date 
    = DTP.Value.Year.ToString() + "-" + DTP.Value.Month.ToString() + "-0" + DTP.Value.Day.ToString();
                        
    else
                            date 
    = DTP.Value.Year.ToString() + "-" + DTP.Value.Month.ToString() + "-" + DTP.Value.Day.ToString();
                    }
                }
                
    if (format == "YYYYMMDD")
                {
                    
    if (DTP.Value.Month <= 9)
                    {
                        
    if (DTP.Value.Day <= 9)
                            date 
    = DTP.Value.Year.ToString() + "0" + DTP.Value.Month.ToString() + "0" + DTP.Value.Day.ToString();
                        
    else
                            date 
    = DTP.Value.Year.ToString() + "0" + DTP.Value.Month.ToString() + DTP.Value.Day.ToString();
                    }
                    
    else
                    {
                        
    if (DTP.Value.Day <= 9)
                            date 
    = DTP.Value.Year.ToString() + DTP.Value.Month.ToString() + "0" + DTP.Value.Day.ToString();
                        
    else
                            date 
    = DTP.Value.Year.ToString() + DTP.Value.Month.ToString() + DTP.Value.Day.ToString();
                    }
                }
                
    return date;
            }
        }
    }
    以上函数修改为:
     public string GetDate(DateTimePicker DTP, string date, string format)
            
    {
                
    if (format = "YYYY-MM-DD")
                
    {
                    date 
    = DTP.Value.ToString("yyyy-MM-dd");
                }

                
    if (format = "YYYYMMDD")
                
    {
                    date 
    = DTP.Value.ToString("yyyyMMdd");
                }

                
    return date;
            }

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;

    namespace RZGY
    {
        
    public partial class FrmW_TD_GROOVE : Form
        {
            
    public FrmW_TD_GROOVE()
            {
                InitializeComponent();
            }

            LinkDB link 
    = new LinkDB();
            DataSet dsGroove 
    = null;
            
    string sqlGroove = "select * from TD_GROOVE";
            BindingSource bs 
    = null;
            
    private void FrmW_TD_GROOVE_Load(object sender, EventArgs e)
            {
                link.CustomizeDataGridView(dgvW_TD_GROOVE);
                dsGroove 
    = new DataSet();
                dsGroove 
    = link.ExecuteSQLDataSet(sqlGroove, "tbTD_GROOVE");
    /*************************************************************************************/
                bs 
    = new BindingSource(dsGroove, "tbTD_GROOVE");
                dgvW_TD_GROOVE.DataSource 
    = bs;
    /*************************************************************************************/

                FillcmbGrooveCode();
            }

            
    private void FillcmbGrooveCode()
            {
                cmbGrooveCode.Items.Clear();
                DataTable dt 
    = link.ExecuteSQLDataTable("select GROOVE_CODE from TD_GROOVE");
                cmbGrooveCode.Items.Add(
    "全部");
                
    for (int i = 0; i < dt.Rows.Count; i++)
                {
                    
    this.cmbGrooveCode.Items.Add(dt.Rows[i][0].ToString());
                }
            }
            
    private void btnQuery_Click(object sender, EventArgs e)
            {
                
    try
                {
                    
    string sqlFilter = "select * from TD_GROOVE";
                    
    string sqlFilterAdd = "";
                    
    if (cmbGrooveCode.Text.ToString() == "全部")
                    {
                        sqlFilterAdd 
    = "";
                    }
                    
    if (cmbGrooveCode.Text.ToString() != "全部")
                    {
                        sqlFilterAdd 
    = " where GROOVE_CODE='" + cmbGrooveCode.SelectedItem.ToString() + "'";
                    }
                    sqlFilter 
    += sqlFilterAdd;
                    dsGroove 
    = link.ExecuteSQLDataSet(sqlFilter, "tbTD_GROOVE");
                    dgvW_TD_GROOVE.DataSource 
    = bs;
                }
                
    catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                }
            }

            
    private void btnAddNew_Click(object sender, EventArgs e)
            {
                
    try
                {
                    
    if (dgvW_TD_GROOVE.DataSource != null)
                    {
                        bs.AddNew();
                        dgvW_TD_GROOVE.CurrentCell 
    = dgvW_TD_GROOVE[0, dgvW_TD_GROOVE.CurrentRow.Index]; //设定当前活动单元格
                        
    //设置当前新增行为可写
                        dgvW_TD_GROOVE[0, dgvW_TD_GROOVE.CurrentRow.Index].ReadOnly = false;
                        dgvW_TD_GROOVE[
    1, dgvW_TD_GROOVE.CurrentRow.Index].ReadOnly = false;
                        dgvW_TD_GROOVE[
    2, dgvW_TD_GROOVE.CurrentRow.Index].ReadOnly = false;
                    }
                }
                
    catch(Exception Ex)
                {
                    MessageBox.Show(Ex.Message);
                }
            }

            
    private void btnModify_Click(object sender, EventArgs e)
            {
                dgvW_TD_GROOVE[
    0, currentSelectedRowIndex].ReadOnly = false;
                dgvW_TD_GROOVE[
    1, currentSelectedRowIndex].ReadOnly = false;
                dgvW_TD_GROOVE[
    2, currentSelectedRowIndex].ReadOnly = false;
            }

            
    private void btnDelelte_Click(object sender, EventArgs e)
            {
                
    try
                {
                    
    if (dsGroove.Tables["tbTD_GROOVE"].Rows.Count > 0)
                    {
                        
    int currentRowIndex = dgvW_TD_GROOVE.CurrentRow.Index;
                        bs.RemoveAt(currentRowIndex);
                    }
                }
                
    catch (Exception ERROR)
                {
                    MessageBox.Show(ERROR.Message);
                }
            }

            
    private void btnSave_Click(object sender, EventArgs e)
            {
                
    try
                {
                    bs.EndEdit();
    //注意
                    if (dsGroove.GetChanges() != null)
                    {
                        
    int changeNums = link.BatchUpdate(dsGroove.GetChanges(), "tbTD_GROOVE");
                        
    if (changeNums > 0)
                        {
                            dsGroove.AcceptChanges();
    //注意
                            FillcmbGrooveCode();
                            
    for (int i = 0; i < dgvW_TD_GROOVE.Columns.Count; i++)
                            {
                                dgvW_TD_GROOVE.Columns[i].ReadOnly 
    = true;
                            }
                            MessageBox.Show(
    "保存成功!""提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        
    else
                            dsGroove.RejectChanges();
                    }
                    
    else
                        
    return;
                }
                
    catch (Exception ERROR)
                {
                    MessageBox.Show(ERROR.Message);
                }
            }

            
    private void btnPrint_Click(object sender, EventArgs e)
            {

            }

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

            
    int currentSelectedRowIndex;
            
    private void dgvW_TD_GROOVE_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                currentSelectedRowIndex 
    = dgvW_TD_GROOVE.CurrentRow.Index;
            }

            
    private void btnRefresh_Click(object sender, EventArgs e)
            {
                
    //bs.ResetBindings(false);//使绑定到 System.Windows.Forms.BindingSource 的控件重新读取列表中的所有项,并刷新这些项的显示值
                
    //如果数据架构已更改,则为 true;如果只有值发生了更改,则为 false
                bs = new BindingSource(dsGroove, "tbTD_GROOVE");
                dgvW_TD_GROOVE.DataSource 
    = bs;
            }
        }
    }

    打印暂没实现...
    注:以前写的几个窗体代码有问题,各位请原谅!最近修改!!
  • 相关阅读:
    实体类字段格式校验
    .Net Core之自定义中间件
    创建型之【单例模式】
    Linux下安装Apollo (Quick Start)
    Linux下安装MySQL你又踩过多少坑【宇宙最全教程】
    C#之Expression表达式目录树
    创建型之【建造者模式】
    [LeetCode] 1675. Minimize Deviation in Array
    [LeetCode] 1996. The Number of Weak Characters in the Game
    [LeetCode] 1523. Count Odd Numbers in an Interval Range
  • 原文地址:https://www.cnblogs.com/perfect/p/973416.html
Copyright © 2020-2023  润新知