zoukankan      html  css  js  c++  java
  • winform datagridview在添加全选checkbox时提示:不能设置 selected 或 selected 既不是表 Table 的 DataColumn 也不是 DataRelation。

    在项目中,需要多选功能,于是在datagridview添加了一列DataGridViewCheckBoxColumn

    在给datagridview绑定完数据集之后,对全选进行操作的时候,发现总报错,报错内容如下:

    不能设置 selected 

    selected 既不是表 Table 的 DataColumn 也不是 DataRelation。

    在看到第一个错误信息的时候还有点懵,不知道是什么地方错了,导致不能设置,可是第二个错误一出来,马上就清楚明白了。原来是datagridview绑定的数据集没有selected这个字段。

    知道原因,就好解决了,我们只需在绑定数据集之前,往里面添加selected即可。

    加完之后就不报错啦。

    附:加全选的代码:

     1 #region CheckBox的添加
     2             //在左上角做一个全选
     3             ckBox = new CheckBox();
     4             Rectangle rect = dgv_drug_dict.GetCellDisplayRectangle(CSelect.Index, -1, false);
     5             ckBox.Size = new Size(10, dgv_drug_dict.ColumnHeadersHeight - 2);
     6             ckBox.AutoSize = true;
     7             rect.Y += 2;
     8             ckBox.Location = rect.Location;
     9             ckBox.Text = this.CSelect.HeaderText;
    10             CSelect.HeaderText = "";
    11             this.dgv_drug_dict.Controls.Add(ckBox);
    12             ckBox.Checked = false;
    13             ckBox.CheckedChanged += new EventHandler(ckBox_CheckedChanged);
    14             #endregion
     1 /// <summary>
     2         /// 多选框的选择
     3         /// </summary>
     4         /// <param name="sender"></param>
     5         /// <param name="e"></param>
     6         void ckBox_CheckedChanged(object sender, EventArgs e)
     7         {
     8             DataView dv = (DataView)dgv_drug_dict.DataSource;
     9             if (dv == null) return;
    10             this.dgv_drug_dict.EndEdit();
    11             for (int j = 0; j < dv.Count; j++)
    12             {
    13                 if (this.ckBox.Checked)
    14                     dv[j]["selected"] = "1";
    15                 else
    16                     dv[j][CConst.DGV_SELECTD] = DBNull.Value;
    17             }
    18             this.dgv_drug_dict.EndEdit();
    19             dgv_drug_dict.Invalidate();
    20         }
  • 相关阅读:
    Linux 磁盘挂载和mount共享
    Socket编程实践(8) --Select-I/O复用
    JavaScript 作用域链图具体解释
    扩展MongoDB C# Driver的QueryBuilder
    Gray Code
    Android网络编程Socket【实例解析】
    设计模式之:代理模式
    LOL英雄联盟代打外挂程序-java实现
    MySQL系列:innodb源代码分析之线程并发同步机制
    linux压缩打包
  • 原文地址:https://www.cnblogs.com/wsn1203/p/10058536.html
Copyright © 2011-2022 走看看