選択した datagridview の rpw を datatable に送信したいのですが、datagridview の列の 1 つがチェックボックスであると言う必要があります。これは、私が望むイメージです。
質問する
3378 次
2 に答える
1
多分これを試してみませんか?
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;
}
于 2013-09-12T18:50:55.340 に答える
0
オブジェクトのコレクションを送信する方法を知っていると仮定すると、DataGridViewRow
チェックされたものだけを取得する方法は次のとおりです。
var rows = yourDataGridView.Rows.Cast<DataGridViewRow>().Where(row => (bool)
(row.Cells["name of checkbox column!"] as DataGridViewCheckBoxCell).Value);
あなたDataGridView
がデータバインドされている場合は、もちろん、ジャグリングやキャストではなく、データを直接操作する必要がありますDataGridViewCells
。
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);
于 2013-09-12T15:06:11.300 に答える