zoukankan      html  css  js  c++  java
  • Winform 的dadagridview控件的修改操作

          在.NET中,我们一般用datagridview这个控件来获取存储过程执行的返回值以输出显示.针对这种情况而言,通常的做法是在其CLICK事件中添加代码,通过激发此事件,调用数据操作,调用存储过程,执行SQL,修改数据库存储的内容。如果用架构的话就更省事,同时避免了对数据层的频繁操作.
         还有一种更简单的办法,datagridview这个控件本来就带有增删改查的功能,先绑定好数据源,注意:一定把主键绑定进去,这个主键也是所谓的那个要删除的行的主键,没问题的就OK了,直接实现删除功能!

    在删除操作中的提示确认框
                DialogResult result = MessageBox.Show("确定删除?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                switch (result)
                {
                    case DialogResult.OK: MessageBox.Show("你按了确定"); break;
                    case DialogResult.Cancel: MessageBox.Show("你按了取消"); break;
                }
                //DialogResult r = MessageBox.Show("真的要删除此行吗?", "提醒", MessageBoxButtons.YesNo);
                //if (r.ToString() == "Yes")
                //    e.Cancel = false;
                //else e.Cancel = true;

    右键弹出菜单框的两种做法:

    1:是使用dataGridView的CellMouseDown事件,判断点击的鼠标是不是右键按钮,不建议这种做法。
            private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
            {
                if (e.Button == MouseButtons.Right)
                {
                    if (e.RowIndex >-1)
                    {

                        //弹出操作菜单
                        contextMenuStrip1.Show(MousePosition.X, MousePosition.Y);
                    }

                }
            }

    2:dataGridView的CellContextMenuStripNeeded事件是专门为我们提供上下文菜单栏的事件,准备好了。 

       private void dataGridView2_CellContextMenuStripNeeded(object sender, DataGridViewCellContextMenuStripNeededEventArgs e)
            {
                if (e.RowIndex >-1 )
                {
                    e.ContextMenuStrip = this.contextMenuStrip1;
                }
            }

    为datagridview控件直接增加一行数据,原本我们可以通过datagridview.Rows.Add(row)直接增加一行的,但是,往往我们会给datagridview绑定数据,这时就会报“控件被数据绑定时,无法以编程方式向 DataGridView 的行集合中添加行”这个错,

    这时我们可以通过添加DataTable,再绑定datagridview来达到相同的效果。

                DataTable dt = (DataTable)datagridview.DataSource;

                DataRow dr = dt.NewRow();        
                dr[1] = "N";
                //dt.Rows.Add(dr);

                // dt.Rows.InsertAt(dr, currentRowIndex);
                dataGridView.DataSource = dt;

           

    void dataGridView2_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
    {
      if (e.Control)  //组合键 ,按下Ctrl建
      {

  • 相关阅读:
    中国剩余定理(CRT) & 扩展中国剩余定理(ExCRT)总结
    各种求逆元
    A*(A_star)搜索总结
    线段树总结
    C++的STL
    Unable to make the session state request to the session state server处理方法
    判断UserAgent是否来自微信
    VS2010 EntityFramework Database First
    VS2010类似Eclipse文件查找功能-定位到
    Newtonsoft.Json随手记
  • 原文地址:https://www.cnblogs.com/panjun/p/1955601.html
Copyright © 2011-2022 走看看