如何解决TypeError:在datagridview绑定的数据序列中向表中添加行时,表为null
我有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为空。
此处显示错误
DataRow行= dt.NewRow();
为什么这个dt总是为空
修改 我想添加pax数量,当用户选择pax数量>>以编程方式添加行数=像照片一样的pax数量
注意 session_datagridview中的代码为pax数 photo
这是我的课添加到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
中的对象不是数据表。
也许您将其设置为:
dgvadministration.DataSource = someDataTable.DefaultView;
在这种情况下,它是DataView
,而不是数据表。
也许您从未设置过。.
总之,我们无法告诉您它是什么,但是调试器可以。当程序因异常而停止时,关闭/最小化异常助手,并指向dgvadministration.DataSource
,工具提示会告诉您它是哪种对象:
在这里,我指向数据源,我可以看到它是{System.Data.DataView}
类型。屏幕截图是VB,只是因为那是我当时打开的,但是C#是相同的。如果您将数据源as
作为对象的真实来源或它源自的类型之一,那么您只会从as
中得到非null
首先创建数据表,然后将数据表添加到datagridview surce
我正在使用这种方法,效果很好
int number_of_pax = Convert.ToSByte(txt_Pax.Text);
DataTable dt = new DataTable();
dt.Columns.Add("Your_Column");
DataRow dr = null;
for (int i = 0; i <= number_of_pax ; i++)
{
dr = dt.NewRow();
dr["Your_Column"] = i.ToString();
dt.Rows.Add(dr);
}
dgvadministration.DataSource = dt;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。