C # DataGridView Πλαίσιο ελέγχου είναι ελεγμένο Εκδήλωση - πολλαπλές σειρές;

ψήφοι
2

Έχω ένα datagridview με πολλαπλές στήλες και γραμμές. Η πρώτη στήλη περιέχει ένα πλαίσιο ελέγχου. Θέλω ο χρήστης να είναι σε θέση να επιλέξετε πολλά πλαίσια ελέγχου και στη συνέχεια να εκτελέσει μια ενέργεια. Για παράδειγμα, εάν επιλέξει πλαίσια ελέγχου στις σειρές 1 και 2, τα δεδομένα από άλλες στήλες στις σειρές 1 και 2 μπορούν να επιλεγούν και να περάσει σε ένα messagebox.

Ξέρω ότι πρέπει να χρησιμοποιήσετε το checkbox_changed εκδήλωση για να γίνει αυτό. Ωστόσο έχω πρόβλημα εργάζονται έξω πώς να το κάνουμε αυτό για πολλαπλές σειρές;

Δημοσιεύθηκε 02/07/2009 στις 14:36
πηγή χρήστη
Σε άλλες γλώσσες...                            


4 απαντήσεις

ψήφοι
1

Αν θέλετε ο χρήστης να κάνει κλικ σε ένα κουμπί για να εκτελέσετε την ενέργεια, τότε τι θα πρέπει να χειριστεί το συμβάν Click του κουμπιού, όχι το πλαίσιο ελέγχου Άλλαξε εκδήλωση ... Όταν κάνετε κλικ στο κουμπί, μόλις περάσουν από όλες τις σειρές σας DataGridView και να εκτελέσετε μια ενέργεια σε σειρές που έχουν επιλεγεί.

Απαντήθηκε 02/07/2009 στις 15:05
πηγή χρήστη

ψήφοι
5

Την Κάντε κλικ στο κουμπί συμβάν κάνετε:

static int SelectColumnIndex = 0;
PerformAction_Click(object sender, System.EventArgs e)
{
    string data = string.Empty;
    foreach(DataGridViewRow row in MyDataGridView.Rows)
    {
      if(row.Cells[SelectColumnIndex].Value!=null &&
             Convert.ToBoolean(row.Cells[SelectColumnIndex].Value) == true)
      {
        foreach(DataGridViewCell cell in row.Cells)
        {
          if(cell.OwningColumn.Index!= SelectColumnIndex)
          {
            data+= (cell.Value + " ") ; // do some thing
          }
        }
        data+="\n";
      }
   }
   MessageBox.Show(data, "Data");
}
Απαντήθηκε 02/07/2009 στις 15:08
πηγή χρήστη

ψήφοι
1
static int SelectColumnIndex = 0;

PerformAction_Click(object sender, System.EventArgs e)
{
    string data = string.Empty;    

    foreach(DataGridViewRow row in MyDataGridView.Rows)     
    {
        if(row.Cells[SelectColumnIndex].Value != null 
            &&
         Convert.ToBoolean(row.Cells[SelectColumnIndex].Value) == true)       
        {
            foreach(DataGridViewCell cell in row.Cells)        
            {
                if (cell.OwningColumn.Index != SelectColumnIndex)                               
                {
                    data+= (cell.Value + " ") ; // do some thing           
                 }
            }

            data+="\n";
        }
    }

    MessageBox.Show(data, "Data");
}
Απαντήθηκε 01/06/2011 στις 05:32
πηγή χρήστη

ψήφοι
0

Νομίζω ότι εσείς dont πρέπει να πάση περιπτώσει, εγώ λυθεί αυτό το πρόβλημα με αυτόν τον κωδικό:

//In Fill DataGridViewEvent :
        DataGridViewCheckBoxColumn ChCol = new DataGridViewCheckBoxColumn();
        ChCol.Name = "CheckedRow";
        ChCol.HeaderText = "انتخاب";
        ChCol.Width = 50;
        ChCol.TrueValue = "1";
        ChCol.FalseValue = "0";
        dg.Columns.Insert(0, ChCol);

// In Button Event put these codes:

            try
            {
                MessageBox.Show(row.Cells[2].Value.ToString() + " --> " +
                row.Cells["CheckedRow"].Value.ToString());
            }
            catch
            {
                // Nothing Act
            }


enter code here

Εξόδου σας από αυτήν την παράμετρο: Itemid -> 0 // Για μη ελεγμένο τιμές Itemid -> 1 // Για ελεγμένο Αξίες

Τώρα μπορείτε να φιλτράρετε τις σειρές που επιστρέφουν 1 ως τιμή για τη δράση σας θα δοκιμαστεί αυτόν τον κώδικα και να δουλέψει για μένα

Απαντήθηκε 18/01/2014 στις 20:16
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more