我有一个10行的网格视图。
点击按钮后,我想检查并确保firstname
列的gridview
列下的每个单元格值相同或不相同。
如果所有单元格值相同,则调用changeCellValues()
方法。如果任何单元格值不同,则MessageBox.Show("You cant use your method");
private void button1_Click(object sender, EventArgs e)
{
string x;
string y;
x = dataGridView1.Rows[0].Cells[1].Value.ToString();
for (int i = 0; i < 11; i++)
{
y = dataGridView1.Rows[i].Cells[1].Value.ToString();
if (x == y) continue;
MessageBox.Show("You cant use your method");
}
}
如何检查GridView上每一行的列值是否相同?
答案 0 :(得分:2)
如果您有10
行,请将i < 11
更改为i < 10
并从i
开始1
,因为您已获得第一行的值并将其存储到x
。你的方式似乎是正确的,但不是在循环中显示消息框,你可以使用这样的东西:
x = dataGridView1.Rows[0].Cells[1].Value.ToString();
bool control = true;
for (int i = 1; i < 10; i++)
{
y = dataGridView1.Rows[i].Cells[1].Value.ToString();
if (x != y) { control = false; break; }
}
if(!control) MessageBox.Show("You cant use your method");
else changeCellValues();
答案 1 :(得分:0)
替代使用LINQ ...抓取“firstname”列中的所有内容,使用Distinct
删除重复项,然后计算唯一名称的数量。 (如果您有多个唯一名称,则它们不尽相同。)
var isSameName = dataGridView1.Rows.Cast<DataGridViewRow>()
.Select(x => Convert.ToString(x.Cells["firstname"].Value))
.Distinct().Count() == 1;
if (!isSameName)
{
MessageBox.Show("You cant use your method");
return;
}
changeCellValues();