2014-01-07 44 views
2

我有一个datagridview,我已经设置允许用户将行属性添加为false。Datagridview SelectedRows.Count在选择最后一行时始终为零

我也让它只能在datagridview上有fullrowselect。

用户通过按下工具栏的“+”按钮将行添加到数据网格中。通过将数据库拖动到添加绑定导航器工具栏的表单来创建DGV。

我的问题是,在我的行删除代码,我检查

private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     if (dgvUsers.SelectedRows.Count > 0 && dgvUsers.Rows[0].Selected) 
      MessageBox.Show("You cannot remove the user admin"); 
     else 
     { 
      if (MessageBox.Show("Are you sure you want to remove the user?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) 
      { 
       int code = 0; 

       UserService userService = new UserService(); 

       if (dgvUsers.SelectedRows.Count > 0) 
       { 
        int selectedrowindex = dgvUsers.SelectedCells[0].RowIndex; 

        DataGridViewRow selectedRow = dgvUsers.Rows[selectedrowindex]; 

        code = (int)(selectedRow.Cells[0].Value); 

        if (GlobalClass.SessionId == "admin") 
        { 
         userService.RemoveUsers(code); 
        } 
        else 
         MessageBox.Show("Only username 'admin' can remove users"); 
       } 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 

当我选择最后一行删除,SelectedRows.Count = 0。但它是“1”时,我选择的任何其他行。为什么是这样?

+0

没有任何代码很难找出你的问题。你如何添加行?请发布您的代码。 –

+0

如果选择了一行或多行,您的代码将运行。如果选择了一行,selectedrows.count = 1.检查是否在取消选择该行后发生条件。 – chiapa

+0

@Arin Ghazarian。编辑。 –

回答

5

你可以检查“SelectionMode”属性是否设置为FullRowSelect?

在MSDN写入:

“SelectionMode属性必须设置为FullRowSelect或RowHeaderSelect为SelectedRows与选择的行来填充属性”。

+0

它被设置为FullRowSelect,正如我在问题中所述。 –

+0

如果您想单击一行来选择该行,那么您可能需要将CellClickAction设置为RowSelect。还要确保SelectTypeRow属性设置为默认或其他一些允许选择多行的设置。您可能还想使用SelectTypeCell关闭对单元格的选择。 –

+0

但是,如果你能显示更多的代码,它将是最好的。 –