2011-01-11 8 views
0

Ich schreibe eine Funktion Datagridview (DGV)Wie verwendet man das cellValueChanged-Ereignis in der Datenansicht, um die Filterfunktion zu verwenden?

void filterDataGridView(DataGridView dgv, string columnName, string filterValue) 
{ 
    foreach (DataGridViewRow row in dgv.Rows) 
    { 
     if (row.Cells[columnName].Value.ToString().Contains(filterValue)) 
     { 
      row.Visible = true; 
     } 
     else row.Visible = false; 
    } 
} 

Ich habe 2 dgv mit derselben Spalte zu filtern!
. einer von ihnen ist für die Suche in der secend dgv.
Ich schreibe diese Funktion für dgv1.
erste dgv hat eine Zeile zum Schreiben einer Zeichenfolge in jeder Spalte secend dgv enthält Daten für die Suche.

bitte helfen Sie mir wie kann ich firs dgv verwenden? -> (in jeder Zelle von dgv1 schreibe ich eine Zeichenfolge, in dgv2 ist es Filter) Wie kann ich das tun? Wie kann ich Eigenschaften og dgv1 und welche Veranstaltung wird hilfreich sein, und wie kann ich es verwenden,

Dank :)

Antwort

1

Wenn Ihr DataGridViews an eine Binding gebunden sind, warum Sie nicht die BindingSource.Filter Eigenschaft verwenden, statt der Umsetzung Ihre eigene Filtration?

+0

i binden nicht dgv i verbindliche Quelle füllen dgv myself.how könnte ich dgv properties setzen, um nur eine Zeile zu haben und der Benutzer kann auf Zelle schreiben ??? – sss

1

Wenn ich Sie richtig verstehe, möchten Sie Ihre erste DataGridView (mit der gleichen Spalte wie die zweite, aber nur eine Zeile) verwenden, um Filterzeichenfolgen einzufügen.

So was wie dies mit einem Code falsch (nur ein Beispiel):

this.dataGridView1.ReadOnly = false; 
this.dataGridView1.AllowUserToAddRows = false; 
this.dataGridView1.AllowUserToDeleteRows = false; 

var colA = this.dataGridView1.Columns.Add("Col A", "Column A"); 
var colB = this.dataGridView1.Columns.Add("Col B", "Column B"); 

var rowIdx = this.dataGridView1.Rows.Add("Hello", "World"); 
this.dataGridView1.Rows[rowIdx].ReadOnly = false; 


this.dataGridView1.CellValueChanged += new DataGridViewCellEventHandler(dataGridView1_CellValueChanged); 

CellValueChanged Ereignisbehandlung Ihre Filter auslösen:

void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) 
{ 
    var editedCell = this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]; 
    var newValue = editedCell.Value; 

    // apply filter here... 
} 
+0

Ich wusste, wie Spalten hinzufügen, aber ich konnte keine Sache in der Laufzeit in dgv schreiben; Ich legte lesen nur Eigenschaft falsch für dgv, aber ich kann keine Sache in dgv1 zur Laufzeit schreiben :( – sss

+0

Wenn Ihr Code genau gleich meins ist , sollte es funktionieren.Haben Sie versucht, F2 auf einer Zelle zu drücken, um den Bearbeitungsmodus zu starten? – digEmAll

+0

Ich erstelle ein neues Projekt, weil das nicht funktioniert.Es funktioniert jetzt :) – sss

Verwandte Themen