我有一个sql数据表,我不希望用户删除或修改任何内容,他们只能在需要时添加新行。
我的解决方案是使用datagridview来显示现有数据,但我被卡住了,因为我无法拒绝编辑或删除而不拒绝添加新行,所以这不是一个好方法。否则,使用更新方法将覆盖用户已更改的所有数据(稍后我可以为此提供覆盖权限。)
我可以制作一个只读dgw来显示现有数据,并允许用户逐个输入带有文本框的新数据,但这是一个更大的工作,也许是不必要的。
是否有一种简单的方法可以在不编辑现有数据的情况下添加新行?也许操纵数据表?
谢谢。
答案 0 :(得分:0)
我能想到的更简单的方法是,在填充网格时,看到我从DB添加了多少现有行。我会继续指望它。然后,当用户单击“保存”时,在此计数之后,从行中更新数据库。更新数据库后,将计数更新为新行计数。 即使您不想让用户编辑,也可以这样做,您可以编写事件来检查可编辑行是否小于tis计数,然后禁止他编辑。
答案 1 :(得分:0)
作为替代方案,您可以为用户提供一个新表单,以便他们像许多新表单一样添加新记录。我喜欢用户能够向DataGridView添加行但最终放弃与之战斗的想法。你只需要更容易控制一个表格,而不是DGV中的一行。
回答你的问题 - 可能要求DataGridView主持会议,而不是争取消息来源:
dataGridView1.DataSource = bs;
dataGridView1.ReadOnly = true;
dataGridView1.CurrentCellChanged += delegate
{
DataGridViewRow row = dataGridView1.CurrentRow;
bool readOnly = row == null ||
row.Index != dataGridView1.NewRowIndex;
dataGridView1.ReadOnly = readOnly;
};
(并且不要在列表中设置AllowEdit)