我有一个数据库的id(身份)列。这个列是绑定到我的DataGridView(WindowsForms)。每当我添加一行到DataGridView(它还没有添加到数据库,只是到DataGridView),在这个列的数字是增加一。非常恼人的行为,我不知道如何停止它?我没有使用EF或任何类似的东西。只是在DataGridView中添加列(不是自动生成的,而是用户定义的列- AutoGenerateColumns是关闭的),并为每一列设置DataPropertyName。
ukqbszuj1#
我不知道你的密码,但你有没有试过:
datagridview1.AllowUserToAddRows = false;
并制作一个用于添加行的按钮,然后使用
datagridview1.Rows.Add(-1,..,...);
dpiehjr42#
为什么不把柱子藏起来?
dgvMyDataGridView.Columns["Id"].Visible = false;
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; }
xesrikrc4#
在绑定到网格之前,将integer类型ID列强制转换为string。例如,选择**CAST(ID为varchar(100))**作为来自您的表名称。也可以设置默认值来标识新记录。enter image description here
4条答案
按热度按时间ukqbszuj1#
我不知道你的密码,但你有没有试过:
并制作一个用于添加行的按钮,然后使用
dpiehjr42#
为什么不把柱子藏起来?
eufgjt7s3#
我还没有找到阻止DataGridView自动增加id的方法。但是,现在我可以更改DataGridView中的任何值,数据源绑定到BindingList而不是DataTable,就像以前一样(每个ComboBoxItem必须实现INotifyPropertyChanged)。
xesrikrc4#
在绑定到网格之前,将integer类型ID列强制转换为string。例如,选择**CAST(ID为varchar(100))**作为来自您的表名称。
也可以设置默认值来标识新记录。
enter image description here