1

データグリッドビューの最初の列にチェックボックスがあり、チェックボックスのステータスが変更されるたびにイベントを発生させたいと考えています。cellcontentclick イベントを使用して、sender オブジェクトを datagridviewcell にキャストし、その列インデックスでチェックすることを考えました。しかし、送信者オブジェクトが datagridview オブジェクトであることがわかりました。では、目的の操作を実行するにはどうすればよいでしょうか。

4

3 に答える 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

その他 : コード ビハインドで & および を
使用できますCommandNameCommandArgumentdatagridview_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 に答える