我们都知道WinForm DataGridView控件支持数据绑定,使用方法很简单,只需将DataSource属性指定到相应的数据源即可,但需注意数据源必须支持IListSource类型,这里说的是支持,而不是实现,是因为他既可以是实现了IListSource的类型,也可以是实现 ...
我们都知道WinForm Dataget='_blank'>GridView控件支持数据绑定,使用方法很简单,只需将DataSource属性指定到相应的数据源即可,但需注意数据源必须支持IListSource类型,这里说的是支持,而不是实现,是因为他既可以是实现了IListSource的类型,也可以是实现了IList的类型,例如:List类型,DataTable类型等,这里就不一一列举了,今天我主要实现的功能如标题所描述的:实现WinForm DataGridView控件支持叠加数据绑定,或者说是附加数据功能,什么意思呢?说白了就是支持数据的多次绑定,标准的绑定方法只支持单一绑定,即每次绑定均会清除原来的数据,而叠加数据绑定则可实现每次绑定均以附加的形式(原数据保留)添加到DataGridView控件中,这样就实现了分页加载,但可完整显示已加载的所有数据,这种应用场景在C/S端很常见,B/S端上也有(例如QQ空间动态下面的加载更多按钮)
以下是实现附加数据两种方式:
第一种方式,采用反射获取属性值并循环添加数据行
private static void AppendDataToGrid(DataGridView grid, IList<object> source) { int rowCount = grid.Rows.Count; List<DataGridViewRow> rows = new List<DataGridViewRow>(); Type t = source.GetEnumerator().Current.GetType(); int rowIndex = grid.Rows.Add(); var girdCells = grid.Rows[rowIndex].Cells; //Common.ShowProcessing("正在加载数据,请稍候...", Common.MainForm, (o) => //{ foreach (object item in source) { var row = new DataGridViewRow(); foreach (DataGridViewCell cell in girdCells) { var p = t.GetProperty(cell.OwningColumn.DataPropertyName); object pValue = p.GetValue(item, null); var newCell = (DataGridViewCell)cell.Clone(); newCell.Value = pValue; row.Cells.Add(newCell); } rows.Add(row); } //}); grid.Rows.RemoveAt(rowIndex); grid.Rows.AddRange(rows.ToArray()); }
原标题:C#实现WinForm DataGridView控件支持叠加数据绑定
关键词:C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。