DataGridView数据源为空记录集时以及SelectionChanged事件的处理方法 本帖最后由 xiaosong2008 于 2012-10-12 00:04:42 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、 if (dgvParts == null) { MessageBox.Show("数据源为空!"); return; }这个改成if (.Rows.Count == 0)2、datagridview的SelectionMode改成FullROwSelect就可以使用SelectionChanged做事了 //获取当前单元格所在的行dataGridView1.CurrentCell.OwningRowdataGridView1.CurrentRow最好在取值前判断一下dataGridView1.CurrentRow.IsNewRow如果改了SelectionMode的话,最好把MultiSelect改成False。不能多选.也可以用下面这句来区行dataGridView1.SelectedRows[0] 谢谢haukwong!一、记录集为空时,dataGridView控件Rows.Count值却是1的,因此上面的代码改成了if (dgvParts.Rows.Count == 1) { MessageBox.Show("数据源为空!"); return; }二、我把datagridview的SelectionMode改成FullRowSelect,执行SelectionChanged事件时,程序提示错误“未将对象引用设置到对象的实例”,下为SelectionChanged事件代码: private void dgv1_SelectionChanged(object sender, EventArgs e) { if (dgv1.Rows.Count == 1) { MessageBox.Show("没有相关数据!"); return; } else { txtCode.Text = dgv1.CurrentRow.Cells[0].ToString(); txtName.Text = dgv1.CurrentRow.Cells[1].ToString(); txtRatio.Text = dgv1.CurrentRow.Cells[2].ToString(); rtxtRe.Text = dgv1.CurrentRow.Cells[3].ToString(); } } 用CellClick事件可以运行,代码如下: private void dgv1_CellClick(object sender, DataGridViewCellEventArgs e) { //在dgv1控件的CellClick事件中实现单击某条数据显示详细信息 txtCode.Text = dgv1.SelectedCells[1].Value.ToString(); txtName.Text = dgv1.SelectedCells[2].Value.ToString(); txtRatio.Text = dgv1.SelectedCells[3].Value.ToString(); rtxtRe.Text = dgv1.SelectedCells[4].Value.ToString(); } 但有一个问题,如何让DataGridView控件记载数据源后,第一行是否是自动被选定的?即打开该窗体时,编辑区显示DataGridView控件第一行数据中的值? private void dgv1_SelectionChanged(object sender, EventArgs e) { if (dgv1.Rows.Count == 1) { MessageBox.Show("没有相关数据!"); return; } else { txtCode.Text = dgv1.CurrentRow.Cells[0].ToString(); txtName.Text = dgv1.CurrentRow.Cells[1].ToString(); txtRatio.Text = dgv1.CurrentRow.Cells[2].ToString(); rtxtRe.Text = dgv1.CurrentRow.Cells[3].ToString(); } }应为: private void dgv1_SelectionChanged(object sender, EventArgs e) { if (dgv1.Rows.Count == 1) { MessageBox.Show("没有相关数据!"); return; } else { txtCode.Text = dgv1.CurrentRow.Cells[1].ToString(); txtName.Text = dgv1.CurrentRow.Cells[2].ToString(); txtRatio.Text = dgv1.CurrentRow.Cells[3].ToString(); rtxtRe.Text = dgv1.CurrentRow.Cells[4].ToString(); } }但这并非产生问题的原因!请大家继续帮忙!谢谢! 完成自动点击功能 如何将ComboBox作为查询条件,且查询的条件为数据库中的某一列的值,在运行时在下拉列表中可以找到,怎样做,给出代码 。 怎么隐藏DataGridView里面的列? 请高手帮我看看,这个存储过程改这么改 如何生成控件的副本,心急如焚! 线程求助 在局域网里面用remoting好还是web service好? C#疑问 C# byte[]存储BMP格式图片,在水晶报表中显示不出来。我缺少什么格式么? 请教:怎么样在C#中获取本地主机IPv6地址? vs2010怎么导入已有的c#项目,一个进销存系统 请教:自动回复如何判断楼上的人是不是自己
if (dgvParts == null)
{
MessageBox.Show("数据源为空!");
return;
}这个改成if (.Rows.Count == 0)2、datagridview的SelectionMode改成FullROwSelect就可以使用SelectionChanged做事了
dataGridView1.CurrentCell.OwningRow
dataGridView1.CurrentRow
最好在取值前判断一下dataGridView1.CurrentRow.IsNewRow如果改了SelectionMode的话,最好把MultiSelect改成False。不能多选.
也可以用下面这句来区行
dataGridView1.SelectedRows[0]
一、记录集为空时,dataGridView控件Rows.Count值却是1的,因此上面的代码改成了
if (dgvParts.Rows.Count == 1)
{
MessageBox.Show("数据源为空!");
return;
}
二、我把datagridview的SelectionMode改成FullRowSelect,执行SelectionChanged事件时,程序提示错误“未将对象引用设置到对象的实例”,下为SelectionChanged事件代码:
private void dgv1_SelectionChanged(object sender, EventArgs e)
{
if (dgv1.Rows.Count == 1)
{
MessageBox.Show("没有相关数据!");
return;
}
else
{
txtCode.Text = dgv1.CurrentRow.Cells[0].ToString();
txtName.Text = dgv1.CurrentRow.Cells[1].ToString();
txtRatio.Text = dgv1.CurrentRow.Cells[2].ToString();
rtxtRe.Text = dgv1.CurrentRow.Cells[3].ToString();
}
} 用CellClick事件可以运行,代码如下:
private void dgv1_CellClick(object sender, DataGridViewCellEventArgs e)
{
//在dgv1控件的CellClick事件中实现单击某条数据显示详细信息
txtCode.Text = dgv1.SelectedCells[1].Value.ToString();
txtName.Text = dgv1.SelectedCells[2].Value.ToString();
txtRatio.Text = dgv1.SelectedCells[3].Value.ToString();
rtxtRe.Text = dgv1.SelectedCells[4].Value.ToString();
} 但有一个问题,如何让DataGridView控件记载数据源后,第一行是否是自动被选定的?即打开该窗体时,编辑区显示DataGridView控件第一行数据中的值?
{
if (dgv1.Rows.Count == 1)
{
MessageBox.Show("没有相关数据!");
return;
}
else
{
txtCode.Text = dgv1.CurrentRow.Cells[0].ToString();
txtName.Text = dgv1.CurrentRow.Cells[1].ToString();
txtRatio.Text = dgv1.CurrentRow.Cells[2].ToString();
rtxtRe.Text = dgv1.CurrentRow.Cells[3].ToString();
}
}
应为:
private void dgv1_SelectionChanged(object sender, EventArgs e)
{
if (dgv1.Rows.Count == 1)
{
MessageBox.Show("没有相关数据!");
return;
}
else
{
txtCode.Text = dgv1.CurrentRow.Cells[1].ToString();
txtName.Text = dgv1.CurrentRow.Cells[2].ToString();
txtRatio.Text = dgv1.CurrentRow.Cells[3].ToString();
rtxtRe.Text = dgv1.CurrentRow.Cells[4].ToString();
}
}
但这并非产生问题的原因!请大家继续帮忙!谢谢!