データグリッドビューの最初の列にチェックボックスがあり、チェックボックスのステータスが変更されるたびにイベントを発生させたいと考えています。cellcontentclick イベントを使用して、sender オブジェクトを datagridviewcell にキャストし、その列インデックスでチェックすることを考えました。しかし、送信者オブジェクトが datagridview オブジェクトであることがわかりました。では、目的の操作を実行するにはどうすればよいでしょうか。
質問する
3946 次
3 に答える
1
変更された値を処理CheckBoxCell
するには、このイベントを使用する必要がありますCellValueChanged
。イベントの送信者は、常にイベントを発生させたコントロールになります。何が起こったのかについての詳細を知るには、を調べる必要がありますEventArgs
。
処理に戻るには、次のようにCheckBoxCell
します。
private void dgv_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
var dgv = sender as DataGridView;
var check = dgv[e.ColumnIndex, e.RowIndex].Value as bool?;
if (check.HasValue)
{
if (check)
{
//checked
}
else
{
//unchecked
}
}
}
お役に立てれば :)
于 2013-02-07T09:26:45.753 に答える
1
多くの方法があります
1つの方法は次のとおり
です。javascriptによってクリックが発生したときに行IDを格納できるページでhidden field
またはを取得し、コードビハインドでそのhiddenfield値を取得できます。viewstate
その他 : コード ビハインドで & および を
使用できますCommandName
CommandArgument
datagridview_ItemCommand
于 2013-02-07T09:23:48.633 に答える
0
private void dgvStandingOrder_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (dgvStandingOrder.Columns[e.ColumnIndex].Name == "IsSelected" && dgvStandingOrder.CurrentCell is DataGridViewCheckBoxCell)
{
bool isChecked = (bool)dgvStandingOrder[e.ColumnIndex, e.RowIndex].EditedFormattedValue;
if (isChecked == false)
{
dgvStandingOrder.Rows[e.RowIndex].Cells["Status"].Value = "";
}
dgvStandingOrder.EndEdit();
}
}
private void dgvStandingOrder_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
dgvStandingOrder.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
private void dgvStandingOrder_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (dgvStandingOrder.CurrentCell is DataGridViewCheckBoxCell)
{
dgvStandingOrder.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
于 2013-02-07T09:48:00.300 に答える