/ / comment puis-je envoyer les lignes sélectionnées (avec les cases à cocher) de datagridview à datatable? - c #, winforms

Comment puis-je envoyer les lignes sélectionnées (avec les cases à cocher) de datagridview à datatable? - c #, winforms

Je veux envoyer les rpws sélectionnés d'un datagridview à datatable Je devrais dire que l’une des colonnes de mon datagridview est sa case à cocher c'est une image de ce que je veux:

http://www.uploadmb.com/dw.php?id=1378997861 "Comment??"

Réponses:

1 pour la réponse № 1

Peut-être essayer ceci?

public DataTable GetDataTableFromDataGridView(DataGridView dataGridView)
{
DataTable dataTable = new DataTable();
foreach (DataGridViewColumn column in dataGridView.Columns)
{
//// I assume you need all your columns.
dataTable.Columns.Add(column.Name, column.CellType);
}

foreach (DataGridViewRow row in dataGridView.Rows)
{
//// If the value of the column with the checkbox is true at this row, we add it
if (row.Cells["checkbox column name"].Value == true)
{
object[] values = new object[dataGridView.Columns.Count];

for (int i = 0; i < row.Cells.Count; i++)
{
values[i] = row.Cells[i].Value;
}
dataTable.Rows.Add(values);
}
}

return dataTable;
}

0 pour la réponse № 2

En supposant que vous sachiez envoyer une collection de DataGridViewRow objets, voici comment vous ne devriez obtenir que ceux qui sont cochés:

var rows = yourDataGridView.Rows.Cast<DataGridViewRow>().Where(row => (bool)
(row.Cells["name of checkbox column!"] as DataGridViewCheckBoxCell).Value);

Au cas où votre DataGridView est databound, bien sûr, vous devez directement opérer sur les données, et non plus jongler et lancer DataGridViewCells.

Comme ci-dessus sans LINQ:

var rows = new List<DataGridViewRow>();
foreach(DataGridViewRow row in yourDataGridView.Rows)
if((bool)(row.Cells["name of checkbox column!"] as DataGridViewCheckBoxCell).Value)
rows.Add(row);