c# - TypeError:在datagridview绑定数据源中向表添加行时表为空
问题描述
我有 DataGridView 是数据库中表的数据绑定源
当 DataGridView 为空时,我想以编程方式添加行
我正在使用此代码
private void btn_add_Pax_Click(object sender, EventArgs e)
{
int number_of_pax = Convert.ToSByte(txt_Pax.Text);
DataTable dt = dgvadministration.DataSource as DataTable;
for (int i = 0; i <= number_of_pax; i++)
{
DataRow row = dt.NewRow();
row[1] =Convert.ToString(i);
dt.Rows.Add(row);
}
}
但得到这个错误
System.NullReferenceException:“对象引用未设置为对象的实例。” dt 为空。
错误显示在这里
数据行行 = dt.NewRow();
乳清这个 dt 总是为空
编辑 我想添加人数,当用户选择人数>>以编程方式添加行数=像照片一样的人数
注意datagridview 中的 session_Code 是 pax 照片的数量
这是我的类使用实体框架添加到 datagridview BindingSource
public partial class V_Session_Data
{
public int C_Order_Serial_Code { get; set; }
public Nullable<int> Session_Code { get; set; }
public Nullable<int> Masseurs_Code { get; set; }
public string Masseurs_Name { get; set; }
public Nullable<byte> Session_Type_Code { get; set; }
public string Session__Type_Name { get; set; }
public Nullable<int> C_Order_Masseurs { get; set; }
public Nullable<short> Room_Number { get; set; }
public Nullable<System.DateTime> Session_date { get; set; }
}
解决方案
因为里面的对象dgvadministration.DataSource
不是DataTable。
也许您将其设置为:
dgvadministration.DataSource = someDataTable.DefaultView;
在这种情况下,它是 a DataView
,它不是数据表。
也许你从来没有设置它..
总而言之,我们无法告诉您它是什么,但调试器可以。当程序因异常停止时,关闭/最小化异常助手并指向,dgvadministration.DataSource
工具提示将告诉您它是什么类型的对象:
在这里,我指向 DataSource,我可以看到它是一种{System.Data.DataView}
类型。截图是 VB 只是因为那是我当时打开的,但 C# 是一样的。as
如果您as
将数据源作为对象的真正含义,或者它是从其派生的类型之一,您只会得到一个非空值
推荐阅读
- sql - Postgres SQL 状态:22P02 - 整数的无效输入语法
- asp.net-core - 将 Quartz 添加到 Web API 项目。性能问题
- karate - 空手道 UI 自动化,是否可以使定位器动态化
- c# - 新程序安装后:System.Runtime.InteropServices.SEHException (0x80004005):
- python - 在 Python 中创建“相对”和“分组”图表的组合
- angular - 如何保护子路由并在子路由之间导航?
- python - 无和逻辑操作和/或
- react-native - 两个平面列表合而为一 Reat Native
- orbeon - orbeon 表单数据未存储在 mysql 数据库中
- spring-boot - Spring Boot API端点问题