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建
      {

  • 相关阅读:
    微博CacheService架构浅析 对底层协议进行适配
    Lucene 查询原理 传统二级索引方案 倒排链合并 倒排索引 跳表 位图
    Linux kernel 同步机制
    对话 CTO〡用声音在一起,听荔枝 CTO 丁宁聊 UGC 声音互动平台的技术世界 原创 王颖奇 极客公园 2018-12-01
    当中台遇上DDD,我们该如何设计微服务?
    京东技术沙龙系列之二 | 深度解析京东微服务组件平台
    gRPC设计动机和原则
    微信全文搜索优化之路
    门户级UGC系统的技术进化路线——新浪新闻评论系统的架构演进和经验总结 提高响应性能的手段归根结底就是三板斧:队列(Queue)、缓存(Cache)和分区(Sharding)
    现加减乘除4则运算
  • 原文地址:https://www.cnblogs.com/panjun/p/1955601.html
Copyright © 2011-2022 走看看