2011-05-30 37 views
1

enter image description here如何通过从datagridview中的组合框中选择值来禁用行?

这里我有一列名为“状态”中,我使用ComboBox现在我想的是,当用户选择从ComboBox然后整个行或交付其值“待定”和“传递”这个控件应该被禁用,所以用户不能再次更改它,默认情况下它的值应该是“Pending”,我该怎么做?是否有可能在gridview中禁用单个行?

回答

0

您可以处理RowChanged事件,这样做

if (Status == 'Delivered') 
{ 
    e.Row.Enabled = False; 
} 
2

您不能禁用一个单独的行。但是你可以把它只读:

DataGridView1.Rows[rowIndex].ReadOnly = true;

(这使得一行的rowIndex的指数设置为只读)。

为了您的具体的例子,你想处理的DataGridView的CellValueChanged事件,并有沿行代码:

 void DataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
     { 
      if (e.ColumnIndex == 4 && DataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString() == "Delivered") 
      { 
       DataGridView1.Rows[e.RowIndex].ReadOnly = true; 
      } 
     } 
+0

当m与形式加载该代码尝试它给了我不同的是“指数超出范围,必须是非负面的,并且小于收藏的大小。“在行[e.RowIndex],所以Wats出错了,我也必须初始化RowIndex。 – avirk 2011-05-31 17:09:23

相关问题