首页 新闻 会员 周边

c#如何获取datagridview中的第一列的值,注意不是选中行

0
悬赏园豆:10 [已解决问题] 解决于 2012-04-09 17:36
我在form5的textbox中输入一个值,判断和form4中的datagridview的第一列值是否相等,不相等就显示未找到,怎么写这句啊?在线等答案~~
c#
问题补充:
if (textBox1.Text == "")                
{
MessageBox.Show("请输入号");
}
else if(textBox1.Text != "")
{
if (textBox1.Text != form4.dataGridView1.Columns[1].ToString())
{
MessageBox.Show("未找到对应的信息");
}
}
显示的错误是:索引超出范围。必须为非负值并小雨集合大小。参数名:index
巴索罗缪库玛的主页 巴索罗缪库玛 | 初学一级 | 园豆:48
提问于:2012-04-08 11:04
< >
分享
最佳答案
0

大家插入代码的时候用代码插入插件或者格式化一下不好么?

你得确定你的dagaGridView1有几列。form4.dataGridView1.Columns[1].ToString()这里要找的是第2列(Columns是以0为索引第1项的),如果你要找第1列的值,应该是Columns[0]。如果你的dagaGridView1只有1列,那form4.dataGridView1.Columns[1].ToString()肯定要抛出“索引超出范围”的异常。

另外,Columns[0]得到的是一个DataGridViewColumn的实例,直接ToString仍然没法得到你想要的。

建议这样:

if (textBox1.Text == "")                
{
MessageBox.Show("请输入号");
}
else if(textBox1.Text != "")
{
bool hasSame = false;
for(int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (textBox1.Text == dataGridView1.Rows[i].Cells[0].Value)
hasSame = true;
}
if (!hasSame)
MessageBox.Show("未找到对应的信息");
}
收获园豆:10
麒麟.NET | 老鸟四级 |园豆:3614 | 2012-04-09 15:27

那如果相等就显示出数据,显示的语句该放在哪?

巴索罗缪库玛 | 园豆:48 (初学一级) | 2012-04-09 16:17

@巴索罗缪库玛: 

if (!hasSame)          
MessageBox.Show("未找到对应的信息");
else
// 显示的语句
麒麟.NET | 园豆:3614 (老鸟四级) | 2012-04-09 16:19

@麒麟.NET: 我试过了,不行,而且大括号你都没加~~

巴索罗缪库玛 | 园豆:48 (初学一级) | 2012-04-09 16:29

@巴索罗缪库玛: ……大括号没加是因为只有一行语句,你要是有多行可以自己加上啊。怎么不行?报什么错误?

麒麟.NET | 园豆:3614 (老鸟四级) | 2012-04-09 16:30

@麒麟.NET: 不是错误,是先显示出“未找到对应的信息”,然后再显示出表……

巴索罗缪库玛 | 园豆:48 (初学一级) | 2012-04-09 16:51

@巴索罗缪库玛: 贴一下你现在的代码把

麒麟.NET | 园豆:3614 (老鸟四级) | 2012-04-09 16:52

@麒麟.NET: 

private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
MessageBox.Show("请输入号");
}
else if (textBox1.Text != "")
{
bool hasSame = false;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (textBox1.Text == dataGridView1.Rows[i].Cells[0].Value)
{
hasSame = true;
}
}
if (!hasSame)
{
MessageBox.Show("未找到对应的信息");
}
}
else
{
SqlConnection connection = new SqlConnection("server=.;integrated security=SSPI;database=test");
connection.Open();
string sql1 = "select * from a where number='" + this.textBox1.Text + "'";
SqlCommand cmd1 = new SqlCommand(sql1);
cmd1.Connection = connection;
SqlDataReader dr1 = cmd1.ExecuteReader();
BindingSource bs = new BindingSource();
bs.DataSource = dr1;
this.dataGridView1.DataSource = bs;
connection.Close();
}
}

帮忙看看~~

巴索罗缪库玛 | 园豆:48 (初学一级) | 2012-04-09 17:02

@巴索罗缪库玛: 显然不对啊,你看我前面的代码,最后的一个else应该放在判断是否有对应数据的后面啊,改成这样:

private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
MessageBox.Show("请输入号");
}
else if (textBox1.Text != "")
{
bool hasSame = false;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (textBox1.Text == dataGridView1.Rows[i].Cells[0].Value)
{
hasSame = true;
}
}
if (!hasSame)
{
MessageBox.Show("未找到对应的信息");
}
else
{
SqlConnection connection = new SqlConnection("server=.;integrated security=SSPI;database=test");
connection.Open();
string sql1 = "select * from a where number='" + this.textBox1.Text + "'";
SqlCommand cmd1 = new SqlCommand(sql1);
cmd1.Connection = connection;
SqlDataReader dr1 = cmd1.ExecuteReader();
BindingSource bs = new BindingSource();
bs.DataSource = dr1;
this.dataGridView1.DataSource = bs;
connection.Close();
}
}

}
麒麟.NET | 园豆:3614 (老鸟四级) | 2012-04-09 17:05

@麒麟.NET: 如果加了else,只显示未找到对应的信息,显示不出表;如果不加else,还能显示出表,只是之前还是显示未能找到对应的信息提示框……

巴索罗缪库玛 | 园豆:48 (初学一级) | 2012-04-09 17:14

@巴索罗缪库玛: 说得我晕头转向,如果找不到对应的信息,当然不显示表了。你想要什么样的结果?

麒麟.NET | 园豆:3614 (老鸟四级) | 2012-04-09 17:17

@麒麟.NET: 我的意思是,表显示的正常,而对话框是多余的~在显示了找不到信息的对话框后还是显示出了正确的表

巴索罗缪库玛 | 园豆:48 (初学一级) | 2012-04-09 17:19

@巴索罗缪库玛: 你可以看看代码的逻辑,再思考一下应该怎么改。提示一下:

  1. 如果没找到信息,弹出对话框,这都没有问题。显示正确的表(应该是表没有变化)是因为,GridView的数据源还是你之前设置的,没有任何修改,所以GridView的显示不会有变化。
  2. 如果表显示正常,那代码应该走到了else里,这时是不应该弹出对话框的。你仔细检查一下是不是代码什么地方出了问题,是不是跟我贴的完全一样。
麒麟.NET | 园豆:3614 (老鸟四级) | 2012-04-09 17:23
其他回答(2)
0

遍历datagridview的第一列,用form5的textbox中的值与它一一进行比较。

dagaGridView1.Columns[1].Value   //第一列的值

nyxuem | 园豆:204 (菜鸟二级) | 2012-04-08 12:04
0

for(int i=0;i<dagaGridView1.rows.count;i++){

if(dagaGridView1.Columns[1]!=null){

if(dagaGridView1.Columns[1].Value.tostring().trim()==textbox.text.trim()){

return true;

}

}

}

return false;

無限遐想 | 园豆:3740 (老鸟四级) | 2012-04-08 12:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册