请查看下面的代码并告诉我哪里出错了。
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
没有任何行,我需要在页脚中显示一个新行,控件已经添加到页脚中。我的插入更新和添加新进程都是从网格本身执行的。
因此,如果我的数据表为空,那么在星号行中,我收到错误,“列不允许为空”。在数据库中所有列都有Allow Null复选框被选中。请帮忙。
[更新]
我没有在查询中检索主键。只有表格的可编辑部分。
答案 0 :(得分:2)
您可能希望在填充数据集时阅读架构信息。我不确定这是否会解决你的问题,但我怀疑它会解决。如果没有模式,您的数据表将无法知道列是否接受null。
da.FillSchema(ds, SchemaType.Source);
da.Fill(ds);
答案 1 :(得分:0)
只是一个猜测,但是所有列都不能为空,那么定义为主键的列呢?