我有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'.
答案 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();
它无法将值转换为字符串,因此您需要使用上面的方法对其进行转换。