日期:2014-05-17  浏览次数:21084 次

C# 中 DataGridView 中的一个错误啊
 

错误如图:


只是 一个 DataGridView 控件

DataGridView1.AutoGenerateColumns = false; 不自动生成表头了。


------最佳解决方案--------------------

for(int i=0;i<dgv.Rows.Count-1;i++)//是这个问题吗?
{
}

------其他解决方案--------------------
我也遇到过这样的问题,可能你的datagreiw最下面是空行 ,null无法转换为string类型 只要判断最后一行,然后Continue就好啦

if(i==datagreiew.row.count)
continue;
------其他解决方案--------------------
14楼说的很可能可以解决你的问题,datagridview最下面自动生成的可添加行 它的value就是null
------其他解决方案--------------------
你调试的时候看下Value是否有值。

或者看下dgv里面是什么数据。
------其他解决方案--------------------
给你个提示,先去看看datatable是否有值

我认为这个错就是因为没有值
------其他解决方案--------------------
看一下是dgv.Rows[i].Cells[0]是null还是他的value是null
------其他解决方案--------------------
具体也没看明白,楼主多在即时窗口里看看

另外,楼主也转个弯,别老用这个方法做,看你的代码片段 貌似你要个性化显示dgv里的数据,dataGridView里有很多事件可以搞这个效果的;
比如:数据库里的性别都是0和1表示,那么显示到界面上要显示“男”和“女” 那么就可以使用dgv的很多事件实现,楼主去网上搜一下
------其他解决方案--------------------
if (row.Cells["ColuAlertId"].Value.ToString() != "0") 改成这样的 同样不成功
------其他解决方案--------------------


每个表头都绑定了 数据库张的字段了, 数据源中的字段
------其他解决方案--------------------
引用:
你调试的时候看下Value是否有值。

或者看下dgv里面是什么数据。
 

确定有数据,count 不为0,更 Value 的值有关系吗?
------其他解决方案--------------------
引用:
看一下是dgv.Rows[i].Cells[0]是null还是他的value是null


这个有关系吗?

在另一处 使用 
            TBoxTimes.Text = m_Dgv.CurrentRow.Cells["ColuTime"].Value.ToString();
            TBoxPerson.Text = m_Dgv.CurrentRow.Cells["ColuPerson"].Value.ToString();
            TBoxDataItem.Text = m_Dgv.CurrentRow.Cells["ColuDataItem"].Value.ToString();
            TBoxItemName.Text = m_Dgv.CurrentRow.Cells["ColuCItem"].Value.ToString();

是可以取值的。没问题。
------其他解决方案--------------------
引用:
看一下是dgv.Rows[i].Cells[0]是null还是他的value是null


您的意思是和控件使用没有关系,

而是在这个判断有问题?
------其他解决方案--------------------
好像以前也遇到过这个情况,不太记得当时是怎么处理的

貌似将datagridview的datasource属性绑定一个datatable或者dataview,然后再确定选中的单元格有值就行了吧
------其他解决方案--------------------
当运行报错的时候:选中dgv.Rows[i].Cells[0]这一句。然后点击右键选择“快速监视”,看一下是不是空的,如果不是空的,dgv.Rows[i].Cells[0].Value同样试一下这几句是不是空的。

------其他解决方案--------------------
引用:
具体也没看明白,楼主多在即时窗口里看看

另外,楼主也转个弯,别老用这个方法做,看你的代码片段 貌似你要个性化显示dgv里的数据,dataGridView里有很多事件可以搞这个效果的;