posts - 432,  comments - 40,  views - 54万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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)

 

posted on   小石头的一天  阅读(2570)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示