发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
最近在做一个课堂练习是被郁闷了一把。现成的事成了想当然的事。案例如下。
是一个WinForm程序,在DataGridView绑定控件后,选择一行,进行操作,代码如下:
数据绑定代码:
SqlDataAdapter da = new SqlDataAdapter("select id from shuji","server=.;database=tushudb;uid=sa;pwd=sa;");
DataTable dt = new DataTable();
da.Fill(dt);
My_DGV.DataSource = dt;
这是选择一行后的操作
label1 .Text = My_DGV.Rows[e.RowIndex].Cells[0].Value.ToString();
对于DataGridView来说,有两个例,代码如下:
// Column1
this.Column1.DataPropertyName = "id";
this.Column1.HeaderText = "ID";
this.Column1.Name = "Column1";
// Column2
this.Column2.DataPropertyName = "ISBN";
this.Column2.HeaderText = "ISBN";
this.Column2.Name = "Column2";
上面的两行,我是先添加Column2,后添加Conlumn1的,然后把name属性换掉的。
如果数据库中有数据,运行后,在DataGridView中就会有数据记录:
当我们选一行时,会报一个“未将对象引用设置到对象的实例”。当出现这个问题,我很是纳闷,因为我查询出一行,并且已经在ID这列中显示出来了,当我取这某一行的列索引为0时,出问题了,没有实例,也就是为null。不应该呀,于是就找根源。
先看局部变量窗口中的My_DGV对象,数据都在这个对象的Rows集合下,并且在非公共成员List集合中,这个集合存着所有Grid的行,在这个集合中的某个元素中,有一个Cells的属性,这个属性是这一行所有列的集合,展开这个属性的List属性,因为我们取的是第0列索引,所以展开下标为0的,再展开base,其中有一个value值,不难看到,这个值是null,也就是这列上没有值,为什么呢?如果仔细看,有一个OwningColum的属性,这个属性中明确的看到,Name=Column2,Index=0,也就是告诉我们,即使是我们改了每个列的name属性,但一开始我们在DataGridView的Columns集合中添加列的顺序是没有变的,即在集合中的位置是不变的。所以上图中的ID列,是和ISBN列换了一下位置的,所以在找下标为0的列是,其实找的是ISBN,是没有数据的。所以最好不要用下标来取值。
当然,我们可以取行某列时,改成如下
label1 .Text = My_DGV.Rows[e.RowIndex].Cells["Column1"].Value.ToString();
这样就会显示的告我们选的是那一行的数据。
来自: 昵称10504424 > 《工作》
0条评论
发表
请遵守用户 评论公约
datagridview总结
datagridview总结。Rows[DataGridView.有时DataGridView上的单元格是可以编辑的,或者DataGridView某一列是ComboBox、CheckBox,这时用户在编辑完信息而没有点击任何别的地方(点击别的地方就不会出现...
c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置...
c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置...c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)DataGridView.另 外,通过 DataGridView.ColumnHead...
DataGridView 操作
[VB.NET]‘ 设定 (0, 0) 为当前单元格DataGridView1.CurrentCell = DataGridView1(0, 0) [C#]// 设定 (0, 0) 为当前单元格DataGridView1.CurrentCell = DataGridView1[0, 0];-> 如果希望,Data...
DataGridView 添加checkbox
DataGridView 添加checkbox.DataGridView.//取得选中的行 for (int i = 0; i <dataGridView1.Rows.Count; i++) { if (dataGridView1.Rows[i].Cells["Sel...
DataGridView编程36计
件ByValeAsDataGridViewCellErrorTextNeededEventArgs)_HandlesDataGridView1.CellErrorTextNeededDimdgvAsDataGridView=CType(sender,DataGridView)''''Error.RowErrorTextNeededDimd...
DataGridView控件中加入ComboBox下拉列表框的实现(C#)
Text = "男"; } else { cmb_Temp.Text = "女"; } ...
DataGridView中获取与设置当前选中行以及SelectedRows和CurrentRow注意区分
DataGridView中获取与设置当前选中行以及SelectedRows和CurrentRow注意区分场景。DataGridView怎样实现添加、删除、上移、下移一行:private int GetSelectedRowIndex(DataGridView dgv) { if (dgv.dat...
PHP 将二维数组中某列值作为数组的键名
PHP 将二维数组中某列值作为数组的键名。有时候,想通过数组的中某字段值, 然后再在二维数组中获取存在该字段值的数组;array_column — 返回数组中指定的一列说明array_column ( array $input , mixe...
关于DataGridView控件单元格实现下拉选择以及其他
//将它绑定到表格控件里去 dgv.Rows[rowNumber].Cells[3] = dgvComBoBoxPrint_Data; dgv.Rows[rowNumber].Cells[7] = dgvComBoBoxFontNames; dgv.Rows[rowNumber].Ce...
微信扫码,在手机上查看选中内容