基于datagridview复选框,其他将禁用

时间:2016-09-02 10:02:23

标签: c# winforms datagridview

我有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;
                  }
             }
        }
    }
}

请为我提供建议。

1 个答案:

答案 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;
                    }

                }
            }

        }

并且输出是; enter image description here

所以在你的情况下代码应该是;

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显示得更好,你可以删除。)