我有一个带有“代码”列的用户数据表,我在 MySql DB 中将其设置为 PK 并自动递增“true”。
我希望用户在数据网格 View 上填写名字、姓氏、用户名等值,但不能输入代码值。
我有更新/插入的代码:
private void usersBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
try
{
if (dgvUsers.RowCount > 0)
{
for (int i = 1; i <= dgvUsers.RowCount; i++)
{
var code = dgvUsers.Rows[i].Cells[0].Value.ToString();
if (code == string.Empty)
{
// add users
this.usersTableAdapter.Insert(
dgvUsers.Rows[i].Cells[1].Value.ToString(),
dgvUsers.Rows[i].Cells[2].Value.ToString(),
dgvUsers.Rows[i].Cells[3].Value.ToString(),
GlobalClass.MD5Hash(dgvUsers.Rows[i].Cells[4].Value.ToString()),
DateTime.Now,
null
);
}
else
{
// edit users
this.usersTableAdapter.Update(this.eko_payrollDataSet.users);
}
}
}
MessageBox.Show("Details Updated Successfully");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
表结构:
Code int NN PK Autoincrement
firstName Varchar NN
lastName Varchar NN
userName Varchar NN
password varchar NN
created datetime NN
modified datetime Null?
我将 datagridview 从创建绑定(bind)源的数据集中拖到表单中。当我按 + 按钮添加新行并完成输入值时,当我将光标移动到另一行或尝试在其下方添加一行时,我会得到一个
NoNullAllowedExeption for column Code
。我需要做什么来解决这个问题?我没有添加会导致这种情况的验证代码。
我在这里遇到了同样的问题 http://www.databaseforum.info/5/857494.aspx
最佳答案
当您的 PK 是自动增量列时,DataSet 中的关联列应该有适当的 AutoIncrement 和 AutoIncrementSeed,否则您应该能够在数据集设计器中设置它们。
这是一个与您类似的问题,看看您是否能找到有用的东西。
autoincrement-values-in-autogenerated
我认为你的问题很少,你能举个例子还是把数据集/数据表和gridview的所有属性都放上来。
祝你好运。