事务:为 DataGridView 添加数据列[也可以说是直接操作 DataGridView 数据列...]...
原由:在为 DataGridView 添加列的时候,[至少这是第三次遇到] 弹出 添加列 的 CellType 为空值...的错误提示
>>> 慢慢回想曾经遇到过的情况,且已是解好过,始终没有想起...查看为 DataGridView 控件 所添加的列属性时,发现 所建立的 列是基于 DataGridViewCell 的派生类,如:DataGridViewTextBoxCell [ ComboBox/CheckBox... ] ,当然,也就是这个问题了[以前也是这么解决的,由于记性不好,所以博客记录一下...],这个派生类能指明的就是对应 DataGridViewCell 基类的 CellType 属性
明白:由于测试过使用 DataGridViewCell dgvc=dataGridView1.Columns[0].Clone() as DataGridViewCell 等方法均是不行的,所以,由此申明的 cell 是没有默认 CellType 属性的,必须使用其派生类实例化...

以下是附带相关基本的函数代码:

#region 插入列

/// <summary>
/// [综合方法:参考] 插入列,在其对应的属性 DataSourse = null 的情况下使用,如:DataSourse 未用 DataTable/DataSet 等赋的情况下[如果有其赋值,可用操作 DataTable 的列来控制]
/// 测试:正确 2021/06/23 16:18:44
/// </summary>
/// <param name="dgv"></param>
/// <param name="insCelTyp">列单元格类型,其对应的列属性为 CellType 列单元控件类型 [即:如果出现 CellTyp 为空时,即为未指明此属性,因为 DataGridViewCell 没有默认的指向类型]</param>
/// <param name="hedTxt">列 HeaderText </param>
public static void Ins(DataGridView dgv, DataGridViewCell insCelTyp, string hedTxt)
{
#region int dspIdx;
F.Ctrs.Dgv.Col.DspIdx(dgv, out dspIdx);
if (dspIdx < 0)
return; Ins(dgv, insCelTyp, hedTxt, dspIdx); #endregion
}
#endregion #region 左/右移列 /// <summary>
/// 综合以上3种情况
/// </summary>
/// <param name="dgv"></param>
/// <param name="movRit"></param>
public static void Mov4(DataGridView dgv, bool movRit)
{
DataGridViewColumn dgvC;
int dspIdx;
DspIdx(dgv, out dgvC, out dspIdx);
if (dspIdx < 0)
return; Mov(dgvC, movRit);
} #endregion #region 删除列 /// <summary>
/// 综合以上3种情况 [但可能需要小心使用]
/// </summary>
/// <param name="dgv"></param>
public static void Del4(DataGridView dgv)
{
DataGridViewColumn dgvC;
int dspIdx;
DspIdx(dgv, out dgvC, out dspIdx);
if (dspIdx < 0)
return; Del(dgvC);
} #endregion #region 综合调用函数 /// <summary>
/// 获取 可能的 鼠标点击列的 显示 排序 索引 号
/// 测试:正确 2021/06/23 17:04:44
/// 注明:此函数具有可补充的情况逻辑[或更简单的替代解决方法]...
/// </summary>
/// <param name="dgv"></param>
/// <param name="dspIdx"></param>
/// <returns></returns>
public static bool DspIdx(DataGridView dgv, out DataGridViewColumn dgvC, out int dspIdx)
{
#region dgvC = null;
dspIdx = -1;
dgvC = dgv.SortedColumn;
if (dgvC == null)
{
int cnt = dgv.SelectedColumns.Count;
if (cnt > 0)
dgvC = dgv.SelectedColumns[0];
else
{
DataGridViewCell dgvc = dgv.CurrentCell;
if (dgvc == null)
return false;
else
dgvC = dgvc.OwningColumn;
}
} dspIdx = dgvC.DisplayIndex; return true; #endregion
} #endregion

补充:关于直接操作 DataGridView 数据列的说法是相对 DataGridView.DataSource 属性而言,即如果 其DataSource = DataTable, 应该是可以通过 操作 DataTable 数据列来操作 DataGridView 数据列 [书时未严格测试,但以往有这样的做法,且记得是可行的...]

交流 QQ : 2412366909@qq.com
手机号码:177-7499-4428
注:本人使用过程中暂未发现造成存取不正确的问题

最新文章

  1. T-SQL:毕业生出门需知系列(四)
  2. vue 2 滚动条加载更多数据实现
  3. NBU expired Media,Media ID not found in EMM database
  4. focus 、blur和focusin,focusout的区别
  5. (二)ubuntu学习前传—uboot常见命令
  6. 查看某个html标签有哪些属性和事件
  7. 求一个数组中最小的K个数
  8. mysqlbinlog快速遍历搜索记录 (转)
  9. 关于htmlspecialchars实体字符转码的问题
  10. click事件的参数化
  11. Custom ASP.NET Application into SharePoint --整合ASP.NET应用程序到SharePoint
  12. iOS基础 - NSURLSession
  13. admin密码重置方式
  14. C#的改进特性
  15. 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之五 || Swagger的使用 3.3 JWT权限验证【必看】
  16. oracle建表 和 设置主键自增
  17. 对xml进行数据查询时发生NoClassDefFoundError,dom4j和jaxen
  18. 不失一般性和快捷性地判定决策单调(洛谷P1912 [NOI2009]诗人小G)(动态规划,决策单调性,单调队列)
  19. MySQL SELECT 执行的具体步骤
  20. 【转载】VC维,结构风险最小化

热门文章

  1. 2021年RT-Thread开发者大会
  2. 阿里云部署OSS对接TP项目
  3. 如何把高德地图搜索结果导出成excel里?
  4. Java语言程序设计课后小结
  5. 源码安装pg9.6
  6. Java-ArrayList常用API
  7. 配置vscode快速输出模板
  8. 杭电oj--1019题C++实现
  9. 数据结构(C语言)_链表
  10. ZSTUOJ刷题⑨:Problem H.--尖兵