| this.editCategoryName.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.objMyDataSet, "Categories.CategoryName")); |
上面一段代码把数据表的列绑定到了TextBox的Text属性上。 数据的多值绑定如下:
| grdProducts.SetDataBinding(objMyDataSet, "Categories.CategoryProductRel"); |
可见通过关系绑定数据相当方便。 四.数据浏览 这里通过BindingContext对象的索引得到BindingManagerBase实例,而BindingManagerBase.Position就是我们需要的,通过Position来显示某一行的数据记录。 例如下一条:
| this.BindingContext[objMyDataSet,"Categories"].Position = (this.BindingContext[objMyDataSet,"Categories"].Position + 1); |
最后一条:
| this.BindingContext[objMyDataSet,"Categories"].Position = (this.objMyDataSet.Tables["Categories"].Rows.Count - 1); |
另外调用PositionChanged()方法来改变导航按钮之间的索引显示。 五.数据编辑 从添加方法中我们可以看到下面代码:
| // 清除当前编辑内容 this.BindingContext[objMyDataSet,"Categories"].EndCurrentEdit(); |
经常有人在csdn上提问为什么在编辑DataGrid或TextBox的时候,只有当编辑框失去焦点的时候才会被保存。要实现不改变焦点就保存可以通过上面代码实现。 相对应的取消如下:
| this.BindingContext[objMyDataSet,"Categories"].CancelCurrentEdit(); |
删除数据的代码如下:
| this.BindingContext[objMyDataSet,"Categories"].RemoveAt(this.BindingContext[objMyDataSet,"Categories"].Position); |
看到上面代码发现原来数据不是真正的在数据源删除,不过我们开发的时候可能用的更多的是DataRow的Delete()方法,这样能够提交数据更新到数据源。 六.数据更新 向导生成的代码如下:
| public void UpdateDataSet() { // 创建一个新数据集来保存对主数据集所做的更改。 WindowsApplication1.MyDataSet objDataSetChanges = new WindowsApplication1.MyDataSet(); // 停止当前的任何编辑。 this.BindingContext[objMyDataSet,"Categories"].EndCurrentEdit(); |
|