Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列不允许空值_C#_Asp.net_Sql Server_Ado.net_Datatable - Fatal编程技术网

C# 列不允许空值

C# 列不允许空值,c#,asp.net,sql-server,ado.net,datatable,C#,Asp.net,Sql Server,Ado.net,Datatable,请看一下下面的代码,告诉我哪里出了问题 case "particulars.aspx": dt = JobCardManager.GetParticularsByJobId(id); hidJobId.Value = id.ToString(); if (dt != null && dt.Rows.Count > 0) { gvParticulars.DataSource = dt; gvParticulars.DataBin

请看一下下面的代码,告诉我哪里出了问题

case "particulars.aspx":
   dt = JobCardManager.GetParticularsByJobId(id);
   hidJobId.Value = id.ToString();
   if (dt != null && dt.Rows.Count > 0)
   {
      gvParticulars.DataSource = dt;
      gvParticulars.DataBind();
   }
   else
   {
      **dt.Rows.Add(dt.NewRow());**
      gvParticulars.DataSource = dt;
      gvParticulars.DataBind();

      int TotalColumns = gvParticulars.Rows[0].Cells.Count;
      gvParticulars.Rows[0].Cells.Clear();
      gvParticulars.Rows[0].Cells.Add(new TableCell());
      gvParticulars.Rows[0].Cells[0].ColumnSpan = TotalColumns;
      gvParticulars.Rows[0].Cells[0].Text = "No Record Found";
   }

   ddlJobs.Enabled = false;
   gvParticulars.ShowFooter = true;
   break;
我想要实现的是,如果
dt
没有任何行,我需要在页脚中显示一个新行,页脚中已经添加了控件。我的插入更新和添加新进程都是从网格本身执行的

因此,如果我的数据表为null,那么在带星号的行中,我会得到错误,“Column不允许null”。其中,在数据库中,选中所有列的“允许为空”复选框。请帮忙

[更新]


我没有在查询中检索主键。只有表的可编辑部分。

填充数据集时,可能需要读取架构信息。我不确定这是否能解决你的问题,但我怀疑会。如果没有模式,datatable将不知道列是否接受null

da.FillSchema(ds, SchemaType.Source);
da.Fill(ds);

只是猜测一下,但所有列都不能为null,那么定义为主键的列呢?

在允许所有null后是否重新生成类型化数据集?实际上,我的方法是返回datatable。。。所以我需要用求和的方法把支票放在返回表上