WinFormDataGridView新增加⾏
1.不显⽰最下⾯的新⾏
通常 DataGridView 的最下⾯⼀⾏是⽤户新追加的⾏(⾏头显⽰ * )。如果不想让⽤户新追加⾏即不想显⽰该新⾏,可以将 DataGridView 对象的 AllowUserToAddRows 属性设置为 False。
DataGridView1.AllowUserToAddRows = false;
但是,可以通过程序: DataGridViewRowCollection.Add 为 DataGridView 追加新⾏。
2. 为⽣成的新⾏添加默认值
当⽤户选择“新⾏”作为当前⾏,DataGridView会触发DefaultValuesNeeded事件。在该事件中可以访问新⾏,并为其⽣成默认值,为⽤户输⼊提供⽅便。
1 2 3 4 5 6 7 8 9private void dataGridView1_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e) {
e.Row.Cells["Region"].Value = "WA";
e.Row.Cells["City"].Value = "Redmond";
e.Row.Cells["PostalCode"].Value = "98052-6399";
e.Row.Cells["Region"].Value = "NA";
e.Row.Cells["Country"].Value = "USA";
gridview不显示e.Row.Cells["CustomerID"].Value = NewCustomerId();
}
3.在新⾏中输⼊数据
⽤户开始在新⾏输⼊数据之前,新⾏的IsNewRow属性值为true,即第⼀次触发改⾏的CellEnter和CellBeginEdit事件中IsNewRow事件为Ture。⼀旦⽤户开始输⼊,这⼀⾏就不再是新⾏了,DataGridView中会产⽣⼀个“新”的新⾏,看下⾯⽰意图:
在添加“新”的新⾏时,会触发UserAddedRow事件,它的事件处理函数的第⼆个参数有属性Row,指定了这个“新”的新⾏。如果⽤户此时按下Escape键,“新”的新⾏会被移除,这会触发UserDeletingRow事件,它的事件处理函数的第⼆个参数的属性Row指定了“新”的新⾏。
4. ⾃定义新⾏的可视化效果
新⾏是基于RowTemplate模板创建的,如果没有指定它的单元格的样式,它们会采⽤继承的样式。
新⾏中单元格的初始值是由每个单元格的DefaultNewRowValue属性决定的。对于DataGridViewImageCell类型的单元格,其初始值为⼀个占位图⽚,其它类型的则为null。你可以重写这个属性以返回⾃定义值。但也可以在DefaultValuesNeeded事件处理函数中对默认值进⾏替换,该事件在焦点进⼊新⾏时触发。
新⾏标题的标准图标是箭头或者星号,并没有得到暴露。如果你要⾃定义这个图标,就需要创建⼀个⾃定义的
DataGridViewRowHeaderCell 类。
新⾏的标题的标准图标使⽤标题单元格DataGridViewCellStyle的ForeColor属性。注意:如果没有⾜够的空间,图标就不会再显⽰。
如果为标题单元格设置了字符串值(通过Value属性),但没有⾜够的控件同时显⽰⽂本和图标,那么图标会被⾸先截掉。
5. 新⾏的排序
在⾮绑定模式下,新⾏总是添加在DataGridView的最后⼀⾏,即使已经对数据排序。⽤户需要在添加新⾏后会“⾃动”再次进⾏排序,以将新记录放在合适的位置;这种⾏为⽅式类似于ListView控件。
在绑定模式或虚拟模式(Virtual Mode)下,如果已对数据排序,那么插⼊数据时的⾏为取决于数据模型的实现⽅式。对于ADO.NET,新加的⾏会被⾃动排序⾄合适的位置。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。