总结.NET开发中ADO.NET的应用(6)_.Net教程
教程Tag:暂无Tag,欢迎添加,赚取U币!
推荐:关于Gridview的多种使用方法总结asp.net中 Gridview的多种使用方法总结,具体如下面 截图,并包括详细源代码注释,需要的请下载。 1:在Gridview中无须编写后台代码,直接实现增除删改 2:在Gridview中添加新记录 3:在Gridview中实现编辑和更新操作 4:在Gridview中实现一次性更新所有记录
◆ 在程序中访问DataGrid中的内容
DataTable中有数据行DataRow,而在DataGrid中没有行这个对象,这让人感到很不习惯,也觉得不够自然。在DataTable中,一张表的层次结构很清楚,DataTable.Rows属性可以得到这张表所包含的所有行的行集,通过行集的索引DataRowCollection[index]就可以得到具体的一个DataRow,数据行的索引DataRow[index]又可以得到这一行的具体某一列的内容。
而DataGrid中就没有这么方便了,DataGrid只有两个属性可用,DataGrid.CurrentCell 属性,此属性返回一个DataGridCell类型的结构,DataGridCell结构指明此Cell所在的行号和列号。还有一个DataGrid.Item 属性,此属性有两个重载:
public object this[DataGridCell] //获取或设置指定的 DataGridCell 的值
public object this[int, int] //获取或设置位于指定行和列的单元格的值
可见,DataGrid中访问都是针对某个Cell进行的。经常的,我们需要从当前的Cell获得此Cell所对应的DataRow,比如界面中可能先选中DataGrid的某一行,或者某一个Cell,然后点击一个按钮,弹出一个新的窗口,窗口中显示这一行的所有单元的内容,并允许修改单元的值,最后保存关闭窗口。这就需要从当前的DataGrid所在的单元找到其所对应的DataTable所在的行和列。
而DataGrid中显示的数据可能经过DataView的DataView.RowFilter属性、DataView.RowStateFilter属性的过滤,还可能经过DataGrid本身根据各个列的正向和反向排序,所以DataGrid的CurrentRowIndex属性所指示的行索引跟其对应的DataTable的行索引有很大的机会是不一样的,不能够根据DataGrid的CurrentRowIndex去获取其对应的DataTable的行。
这时BindingManagerBase又将发挥作用了,我们可以先建立一个对应此DataGrid绑定的数据源的BindingManagerBase,这样这个BindingManagerBase就可以管理这个数据源。
//设置DataGrid的数据源
dataGrid1.DataSource = myDataSet;
dataGrid1.DataMember = "customers";
//建立同DataGrid同样数据源的BindingManagerBase
BindingManagerBase myBindingManagerBaseParent =
this.BindingContext[myDataSet,"customers"];
一旦建立了这个BindingManagerBase,就可以通过BindingManagerBase的当前行的属性来获取当前数据源的记录:
//BindingManagerBase的Current返回数据源的对象,对于绑定到DataView的数据源,需要将此对象显式
//的转换为 DataRowView类型
DataRowView myDataRowView =(DataRowView) myBindingManagerBaseParent.Current
这样,我们就可以从当前的Cell得到此Cell所在的DataRowView,DataRowView又可以通过DataRowView.Row属性及其方便的得到DataRow。
如果还要进一步,想要得到此Cell所对应的DataTable的具体单元,就是不光要得到DataRow,还要知道这个Cell所对应的列。
这又分两种情况:
一是DataGrid未使用TableStyles来设置DataGrid要显示的列和格式,数据源DataView的所有列都将按照DataView本身的顺序显示出来,这样可以直接取得对应的列索引:
//获取当前DataGrid单元的列索引,这个索引跟DataTable的索引是一样的
Int ColumnNumber = DataGrid.CurrentCell.ColumnNumber;
另一种情况是DataGrid使用了TableStyles来设置DataGrid要显示的列和格式,这样DataGrid单元的列索引跟DataTable的索引就可能是不一样的了,这就要用DataGrid的TableStyles了:
Int ColumnNumberDataGrid = DataGrid.CurrentCell.ColumnNumber;
//获取当前DataGrid单元的列索引
Int ColumnNumberDataTable =
DataGrid.TableStyles[0].GridColumnStyles[ColumnNumberDataGrid].MappingName
分享:String.Empty、NULL、“”的不同之处在asp.net(c#)中 String.Empty、NULL、 3个语法 经常使用,作用是判断字符串是否为空。 本文就它们彼此的不同之处做一粗略说明。 string.Empty就相当于 一般用于字符串的初始化 比如: stringa; Console.WriteLine(a);//这里会报错,因为没有初始化a 而下
相关.Net教程:
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP发送Email实例(可带附件)
- js实现广告漂浮效果的小例子
- asp.net Repeater 数据绑定的具体实现
- Asp.Net 无刷新文件上传并显示进度条的实现方法及思路
- Asp.net获取客户端IP常见代码存在的伪造IP问题探讨
- VS2010 水晶报表的使用方法
- ASP.NET中操作SQL数据库(连接字符串的配置及获取)
- asp.net页面传值测试实例代码
- DataGridView - DataGridViewCheckBoxCell的使用介绍
- asp.net中javascript的引用(直接引入和间接引入)
- 三层+存储过程实现分页示例代码
- 相关链接:
- 教程说明:
.Net教程-总结.NET开发中ADO.NET的应用(6)。