winforms DataGridView阻止ID绑定列的自动增加

y53ybaqx  于 2022-12-23  发布在  其他
关注(0)|答案(4)|浏览(156)

我有一个数据库的id(身份)列。这个列是绑定到我的DataGridView(WindowsForms)。每当我添加一行到DataGridView(它还没有添加到数据库,只是到DataGridView),在这个列的数字是增加一。非常恼人的行为,我不知道如何停止它?
我没有使用EF或任何类似的东西。只是在DataGridView中添加列(不是自动生成的,而是用户定义的列- AutoGenerateColumns是关闭的),并为每一列设置DataPropertyName。

ukqbszuj

ukqbszuj1#

我不知道你的密码,但你有没有试过:

datagridview1.AllowUserToAddRows = false;

并制作一个用于添加行的按钮,然后使用

datagridview1.Rows.Add(-1,..,...);
dpiehjr4

dpiehjr42#

为什么不把柱子藏起来?

dgvMyDataGridView.Columns["Id"].Visible = false;
eufgjt7s

eufgjt7s3#

我还没有找到阻止DataGridView自动增加id的方法。但是,现在我可以更改DataGridView中的任何值,数据源绑定到BindingList而不是DataTable,就像以前一样(每个ComboBoxItem必须实现INotifyPropertyChanged)。

private void initializeDgvNotesDataSource()
{            
    List<ComboBoxItem> list = new List<ComboBoxItem>();
    BindingList<ComboBoxItem> bindingList = new BindingList<ComboBoxItem>(list);
    BindingSource bindingSource = new BindingSource();
    bindingSource.DataSource = bindingList;
    dgvNotes.DataSource = bindingSource;
}
xesrikrc

xesrikrc4#

在绑定到网格之前,将integer类型ID列强制转换为string。例如,选择**CAST(ID为varchar(100))**作为来自您的表名称。
也可以设置默认值来标识新记录。
enter image description here

相关问题