标题:获取DataGridView控件中某行的行号
只看楼主
huanying205
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2007-6-14
 问题点数:0 回复次数:9 
获取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: 2
等 级:论坛游民
威 望:1
帖 子:428
专家分:22
注 册:2006-12-1
得分:0 
int i=e.rowindex;
然后做你要做的

曾经有双翅膀,我没用她飞上蓝天,丢锅里炖汤了!
2007-10-14 14:50
huanying205
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2007-6-14
得分:0 
e属性里没有rowindex,我是在button按钮的Click事件中写的
2007-10-14 15:01
huanying205
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2007-6-14
得分:0 

其实我想做的是从数据库中彻底删除一行数据,但是在红色的那一行总提示说 :索引超出范围,必须为非负值并小于集合大小 参数名: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: 2
等 级:论坛游民
威 望:1
帖 子:428
专家分:22
注 册:2006-12-1
得分:0 
DataGridView1.selecteditem[0].index


曾经有双翅膀,我没用她飞上蓝天,丢锅里炖汤了!
2007-10-14 16:37
guoxhvip
Rank: 8Rank: 8
来 自:聖西羅南看臺
等 级:贵宾
威 望:44
帖 子:4052
专家分:135
注 册:2006-10-8
得分:0 
this.dataGridView1.CurrentRow.Index;

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

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

2007-10-14 18:50
guoxhvip
Rank: 8Rank: 8
来 自:聖西羅南看臺
等 级:贵宾
威 望:44
帖 子:4052
专家分:135
注 册:2006-10-8
得分:0 
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: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2007-6-14
得分:0 
谢谢guoxhvip的指点,你说的完全正确,按照你的方法,问题已经解决!!
2007-10-15 08:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-177515-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.124562 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved