web-dev-qa-db-fra.com

Comment sélectionner une ligne complète de dataGridView lorsque l'utilisateur clique sur une cellule de cette ligne?

J'ai une dataGridView et j'ai besoin que lorsque l'utilisateur clique sur une cellule, toute la ligne contenant cette cellule est également sélectionnée. (il a multiselect disbaled) J'ai essayé d'obtenir le currentRowIndex comme ceci

 int Index = dataGridView1.CurrentCell.RowIndex;

Cependant, je ne suis pas sûr de savoir comment utiliser l'index pour sélectionner cette ligne .

dataGridView1.Select(Index);

Savez-vous un moyen que je peux faire cela?

44
Alex Terreaux

Vous devez définir la variable SelectionMode de datagridview sur FullRowMode.

Remarque: dans Visual Studio 2013 avec .NET 4.5, la propriété s'appelle FullRowSelect, voir https://msdn.Microsoft.com/en-us/library/3c89df86(v=vs.110).aspx

83
urlreader

Si vous souhaitez que la ligne soit sélectionnée par programme, vous utiliseriez l'événement de clic de cellule de datagridview: affiché dans VB.net et C #

VB.Net

Private Sub dgvGrid_CellClick(sender as System.Object, e as System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvGrid.CellClick
    If e.RowIndex < 0 Then
        Exit Sub
    End If

    intIndex = e.RowIndex
    dgvGrid.Rows(intIndex).Selected = True
Exit Sub

C #

private void dgvRptTables_CellClick(System.Object sender, System.Windows.Forms.DataGridViewCellEventArgs e)
{
    if (e.RowIndex < 0) {
        return;
    }

    int index = e.RowIndex;
    dgvGrid.Rows[index].Selected = true;
}
8
Rick H.

Dans les propriétés DataGridView,

  • MultiSelect -> Vrai
  • SelectionMode -> FullRowSelect

2
Champ_01

Pourrait faire quelque chose comme ça

protected override void Render(HtmlTextWriter writer)
{
    foreach (GridViewRow row in Results.Rows)
    {
        if (row.RowType == DataControlRowType.DataRow)
        {
            row.Attributes["onmouseover"] = "this.style.cursor='pointer';";
            row.CssClass = "rowHover";
            row.ToolTip = "Click row to view person's history";
            row.Attributes.Add("onclick", this.ClientScript.GetPostBackClientHyperlink(this.Results,"Select$" & r.RowIndex , true));
        }
    }

    base.Render(writer);
}
1
Tom McDonough

Vous pouvez faire ceci: Peut-être que cela peut vous aider.

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        if (e.RowIndex>0)
        {
            int rowindex = e.RowIndex;
            DataGridViewRow row= this.dataGridView1.Rows[rowindex];
        }
    }
0
//class to store ID (Pri. Key) value of selected row from DataGridView
public class Variables
{
   public static string StudentID;
}                                  

//This is the event call on cell click of the DataGridView
private void dataGridViewDisplay_CellClick(object sender, DataGridViewCellEventArgs e)
{
   Variables.StudentID =this.dataGridViewDisplay.CurrentRow.Cells[0].Value.ToString();
//textBoxName is my form field where I set the value of Name Column from the Selected row from my DataGridView 

   textBoxName.Text = this.dataGridViewDisplay.CurrentRow.Cells[1].Value.ToString();

   dateTimePickerDOB.Value = Convert.ToDateTime(this.dataGridViewDisplay.CurrentRow.Cells[2].Value.ToString());
}

Jetez un coup d'oeil à My DataGridView

0
Parag555