| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 612 人关注过本帖
标题:获取DataGridView控件中某行的行号
收藏  订阅  推荐  打印 
huanying205
Rank: 2
等级:注册会员
帖子:107
积分:1232
注册:2007-6-14
获取DataGridView控件中某行的行号

在03版本中,获取DataGird控件某行的行号是这么写的:int index=dataGrid1.CurrentCell.RowNumber;
那么在05版本中应该怎么写呢:我觉得应该是: int index = dgv_Popedom.CurrentCell.RowIndex;
但是MSDN上说这是获取单元格父行的索引。一样吗?不一样的话。在05中获取控件某行的行号怎么写呢?

搜索更多相关主题的帖子: DataGridView  行号  控件  获取  
2007-10-14 14:46
shen521941
Rank: 3Rank: 3
等级:中级会员
威望:1
帖子:414
积分:4248
注册:2006-12-1

int i=e.rowindex;
然后做你要做的

曾经有双翅膀,我没用她飞上蓝天,丢锅里炖汤了!
2007-10-14 14:50
huanying205
Rank: 2
等级:注册会员
帖子:107
积分:1232
注册:2007-6-14

e属性里没有rowindex,我是在button按钮的Click事件中写的
2007-10-14 15:01
huanying205
Rank: 2
等级:注册会员
帖子:107
积分:1232
注册:2007-6-14

其实我想做的是从数据库中彻底删除一行数据,但是在红色的那一行总提示说 :索引超出范围,必须为非负值并小于集合大小 参数名:index 代码如下:
int index = DataGridView1.CurrentCell.RowIndex;
string strUserNum = DataGridView1[index, 0].ToString();

int intUserNum = Convert.ToInt16(strUserNum);
string msg = "删除该记录将不能恢复,确定要删除\"" + strUserNum + "\"吗?";

DialogResult rs=MessageBox.Show(msg,"删除记录",
MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2);
if(rs== DialogResult.Yes)
{
string connStr,delCmd;
connStr = "workstation id=localhost;Integrated Security=SSPI;Database=djglBook;";
delCmd="Delete From PopedomTable Where 序号="+strUserNum;

SqlConnection conn = new SqlConnection(connStr);
conn.Open();
SqlCommand cmd = new SqlCommand(delCmd,conn);
cmd.Parameters.Add(new SqlParameter("@序号",SqlDbType.SmallInt));
cmd.Parameters["@序号"].Value=intUserNum;
cmd.ExecuteNonQuery();
conn.Close();
ShowUser();
}
if(rs==DialogResult.No)
{
btn_Delete.Enabled = true;
}

2007-10-14 15:25
shen521941
Rank: 3Rank: 3
等级:中级会员
威望:1
帖子:414
积分:4248
注册:2006-12-1

DataGridView1.selecteditem[0].index


曾经有双翅膀,我没用她飞上蓝天,丢锅里炖汤了!
2007-10-14 16:37
guoxhvip
Rank: 12Rank: 12Rank: 12
来自:聖西羅南看臺
等级:版主
威望:36
帖子:3954
积分:39108
注册:2006-10-8

this.dataGridView1.CurrentRow.Index;

愛生活 && 愛編程
2007-10-14 17:58
huanying205
Rank: 2
等级:注册会员
帖子:107
积分:1232
注册:2007-6-14

谢谢以上两位朋友的指点,我搞错了,问题不错在获取行号的问题上,因为按照两位朋友的方法书写后还是那一行提示说:索引超出范围,必须为非负值并小于集合大小  参数名 index; 大家帮忙看一下吧,问题到底出在哪呀?
2007-10-14 18:41
huanying205
Rank: 2
等级:注册会员
帖子:107
积分:1232
注册:2007-6-14

好似有一个提示就是: int intUserNum = Convert.ToInt16(strUserNum);
说是 输入的字符串格式不正确。帮帮我吧,实在不知道怎么办。先谢谢大家了!!!

2007-10-14 18:50
guoxhvip
Rank: 12Rank: 12Rank: 12
来自:聖西羅南看臺
等级:版主
威望:36
帖子:3954
积分:39108
注册:2006-10-8

DataGridView1[index, 0]返回一个什么东西你知道吗?是个DataGridViewCell,你再把它ToString()过后他其实是"DataGridViewTextBoxCell{ColumnIndex=..,RowIndex=..}"这个格式能转换成整型吗?
我估计LZ是想获得当前选定行的第一列的值 可能是个用户编号之类的东西
用:
string strUserNum = dataGridView1[0,this.dataGridView1.CurrentCell.RowIndex].Value.ToString(); // 当前行的第一个单元格的值
或者
string strUserNum = dataGridView1[this.dataGridView1.CurrentCell.ColumnIndex, this.dataGridView1.CurrentCell.RowIndex].Value.ToString(); // 当前行选定单元格的值

愛生活 && 愛編程
2007-10-15 00:44
huanying205
Rank: 2
等级:注册会员
帖子:107
积分:1232
注册:2007-6-14

谢谢guoxhvip的指点,你说的完全正确,按照你的方法,问题已经解决!!
2007-10-15 08:40
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.078349 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved