如何在datagridview中的选定行上搜索字符串值?

时间:2014-10-25 16:42:42

标签: c# datagridview row

我有DataGridView,并且我已经设法让它工作,以便当用户点击一行时,程序用该行中的数据填充相应的文本框。

如果行包含'exampleValue',我希望它自动检查radioButton1,否则它应该检查radioButton2。

我总是得到错误“无法将类型'System.Windows.Forms.DataGridViewCellCollection'隐式转换为'bool'”

提前致谢

编辑:我在这里尝试了这个代码

            if (dtgFunc.Rows[e.RowIndex].Cells.Count > 0)
        {
            foreach (DataGridViewCell cell in dtgFunc.Rows[e.RowIndex].Cells)
            {
                if ((string)cell.Value == "seller")
                {
                    rdbSeller.Checked = true;
                    rdbManager.Checked = false;
                }
                else
                {
                    rdbManager.Checked = true;
                    rdbSeller.Checked = false;
                }
            }
        }

但我仍然遇到这个错误。想法?

Unable to cast object of type 'System.Int32' to type 'System.String'.

2 个答案:

答案 0 :(得分:0)

您可以使用Linq:

yourDataGridViewCellCollection
   .Cast<DataGridViewCell>()
   .FirstOrDefault(x => x.Value.Equals(exampleValue)) != null

修改 我看到你更新了你的帖子。 抛出错误是因为您的某些列具有整数值,并且您尝试将其值转换为字符串。

替换你的循环
if (dtgFunc.Rows[e.RowIndex]
   .Cells
   .Cast<DataGridViewCell>()
   .FirstOrDefault(x => x.Value.Equals("seller")) != null)
{
   rdbSeller.Checked = true;
   rdbManager.Checked = false;
}
else
{
   rdbManager.Checked = true;
   rdbSeller.Checked = false;
}

或者你可以改变

(string)cell.Value == "seller"

在您当前的代码中:

cell.Value.Equals("seller")

因为cell.Value是一个对象,它会在比较之前检查类型是否兼容

答案 1 :(得分:0)

您需要做的就是改变

(String)cell.Value

到此

cell.Value.ToString();

它无法将值转换为字符串,因此您需要使用上面的方法对其进行转换。