DataGridView1.Rows.Add(row)
利用以上代码实现时的提示:
当控件被数据绑定时,无法以编程方式向 DataGridView 的行集合中添加行。
解决方法:
1、直接在dataset中增加的,dataset中增加,datagridview自然就增加了.
2、在数据绑定之前插入一个空行DataTable.Rows.insertat(DataTable.NewRow,位置),然后再绑定。
3、直接DataTable.Rows.Add(DataTable.NewRow)就是在最后一行加入一个空白行
4、添加一个 BindingSource所有的问题都解决了。首先是把数据源设给 BindingSource 的数据源。然后再把BindingSource设给 DataGridview 的数据源。需要使用BindingSource中转一下才可以。
5、调用datatable的insert方法插入到指定位置
补充第四条: 数据源必须是 Datatable 不能是List<> 集合的方式 后发现用bindingsource 会出现bug. 直接dt 怼给datasource便可.
//BindingSource bs = new BindingSource(); // bs.AllowNew = true; // bs.DataSource = dt; uiDataGridView1.DataSource =dt
;
DataRow newRow; newRow = dt.NewRow(); newRow["Id"] = 0; newRow["Name"] = ""; dt.Rows.Add(newRow);
注:
1)绑定到DataTable,其实是绑定到DataTable提供的DataView上。每个DataTable都有一个缺省的DataView
2)DataView是绑定的实质,正如其名,它是DataTable的数据的展现。因此可以对同一个DataTable
,构建多个DataView,进而可以对这同样的数据实施不同的过滤、排序等方法,从不同侧面展示DataTable。这也体现了一定的MVC思想。
3)BindingSouce也可作为数据(其实是数据引用)的容器在不同窗体间传递,从而实现在弹出窗体中对数据的编辑
资料
https://blog.csdn.net/byondocean/article/details/6867214
后续:sunnyui ,新增数据, 成功后,鼠标移动到新增行进行编辑, 无触发事件问题
初始化列的时候默认列只读了.不让修改,这是原先的事件也获取不到点击也就不能改了, readonly 传递一个false ,就可以了
public DataGridViewColumn AddColumn(string columnName, string dataPropertyName, int fillWeight = 100, DataGridViewContentAlignment alignment = DataGridViewContentAlignment.MiddleCenter, bool readOnly = true)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!