我在Windows窗体中有一个数据表,我想在表中添加一个新行。我总是收到错误
表没有主键。
问题是我根本不需要主键。它可能在表格中有重复的“ID”。 我的代码:
using (DataTable dt = new DataTable())
{
dt.Columns.Add("EntryDE", typeof(string));
dt.Columns.Add("Descr", typeof(string));
dt.Columns.Add("Id", typeof(int));
foreach (DataGridViewRow row in dgv.Rows)
{
DataGridViewCheckBoxCell check = row.Cells[0] as DataGridViewCheckBoxCell;
if (check.Value != null)
{
if ((bool)check.Value)
{
//this row has a checkBox set to true (tick is added)
//add this row to dataTable ...
DataRow myRow = (row.DataBoundItem as DataRowView).Row;
DataRow dr = dt.NewRow();
dr["EntryDE"] = myRow["ID"].ToString();
dr["Descr"] = myRow["EntryName"];
dr["Id"] = Id;
dt.Rows.Add(dr);
}
}
}
感谢您的建议。
答案 0 :(得分:0)
您可能确实需要主键,因为没有主键,您将无法在以后更新或删除行。
如果ID字段包含重复项,则应添加另一列,将其命名为primary_key或任何您喜欢的列,并将该列用作PK。
答案 1 :(得分:0)
错误不是来自DataTable,因为它可以工作:
using (DataTable dt = new DataTable())
{
dt.Columns.Add("EntryDE", typeof(string));
dt.Columns.Add("Descr", typeof(string));
dt.Columns.Add("Id", typeof(int));
for (int i = 0; i < 10; i++)
{
DataRow dr = dt.NewRow();
dr["EntryDE"] = "abc";
dr["Descr"] = "xyz";
dr["Id"] = 1;
dt.Rows.Add(dr);
}
}
你还有其他问题。