我有Gridview:
这里当我检查一个客户端名称的行时,应该禁用该客户端以外的所有其他客户端。例如,如果我检查第1行,则所有客户端除了具有客户名称 Surbhi1 Texttile mills Pvt之外的行。有限公司应该被禁用。
这就是我的尝试:
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
try
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
int selected = Convert.ToInt32(dataGridView1.CurrentRow.Cells["clientid"].Value);
bool isSelected = Convert.ToBoolean(row.Cells["IsChecked"].Value);
if (isSelected)
{
if (Convert.ToInt32(dataGridView1.CurrentRow.Cells["clientid"].Value) == selected)
{
dataGridView1.Rows[0].Cells[0].ReadOnly = true;
}
}
}
}
}
请为我提供建议。
答案 0 :(得分:0)
我使用testdb做了一个示例,如果您使用datagrid
的事件,那么您可以使用datagrid
的单元格事件参数。
下面,
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.Rows[e.RowIndex].Cells["checkBoxColumn"].Selected)
{
var clientItem = dataGridView1.Rows[e.RowIndex].Cells["SirName"].Value.ToString();
foreach (DataGridViewRow item in dataGridView1.Rows)
{
if (item.Cells["SirName"].Value.ToString() != clientItem)
{
item.Cells["SirName"].ReadOnly = true;
item.Cells["SirName"].Style.BackColor = Color.Green;
}
}
}
}
所以在你的情况下代码应该是;
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.Rows[e.RowIndex].Cells["IsChecked"].Selected)
{
var clientItem = dataGridView1.Rows[e.RowIndex].Cells["clientid"].Value.ToString();
foreach (DataGridViewRow item in dataGridView1.Rows)
{
if (item.Cells["clientid"].Value.ToString() != clientItem)
{
item.Cells["clientid"].ReadOnly = true;
item.Cells["clientid"].Style.BackColor = Color.Green;
}
}
}
}
希望有所帮助,(已让backcolor
显示得更好,你可以删除。)