在为 DataGridView 添加数据列时,弹出 将要添加的列 CellType 属性为空 错误提示与说明
事务:为 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
注:本人使用过程中暂未发现造成存取不正确的问题
最新文章
- T-SQL:毕业生出门需知系列(四)
- vue 2 滚动条加载更多数据实现
- NBU expired Media,Media ID not found in EMM database
- focus 、blur和focusin,focusout的区别
- (二)ubuntu学习前传—uboot常见命令
- 查看某个html标签有哪些属性和事件
- 求一个数组中最小的K个数
- mysqlbinlog快速遍历搜索记录 (转)
- 关于htmlspecialchars实体字符转码的问题
- click事件的参数化
- Custom ASP.NET Application into SharePoint --整合ASP.NET应用程序到SharePoint
- iOS基础 - NSURLSession
- admin密码重置方式
- C#的改进特性
- 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之五 || Swagger的使用 3.3 JWT权限验证【必看】
- oracle建表 和 设置主键自增
- 对xml进行数据查询时发生NoClassDefFoundError,dom4j和jaxen
- 不失一般性和快捷性地判定决策单调(洛谷P1912 [NOI2009]诗人小G)(动态规划,决策单调性,单调队列)
- MySQL SELECT 执行的具体步骤
- 【转载】VC维,结构风险最小化