Как узнать, установлен ли флажок - PullRequest
0 голосов
/ 17 февраля 2011

В представлении сетки данных мне нужно зациклить строки и получить строки, которые содержат флажок dgv.rows [i] .cells [0] .value возвращается пустым в обоих случаях все это происходит на событии CellContentClick

Ответы [ 3 ]

0 голосов
/ 17 февраля 2011

Если флажок не содержит никаких данных, результатом будет нулевое значение.Вы можете проанализировать значение в вашем цикле с bool.Parse(), предполагая, что значение не является нулевым, то есть

for ( int i = 0; i < dgv.Rows.Count; i++ )
{
    var val = dgv.Rows[i].Cells[0].Value;
    if ( val == null ) { continue; }

    bool isChecked = bool.Parse( val.ToString() );
}
0 голосов
/ 19 февраля 2011
static class DataGridViewExtensions
{
    public static IEnumerable<DataGridViewRow> CheckedRows(this DataGridView dgv, string checkedColumnName)
    {
        return CheckedRows(dgv, dgv.Columns[checkedColumnName].Index);
    }

    public static IEnumerable<DataGridViewRow> CheckedRows(this DataGridView dgv, int checkedColumnIndex)
    {
        foreach (DataGridViewRow row in dgv.Rows)
        {
            DataGridViewCheckBoxCell cell = row.Cells[checkedColumnIndex] as DataGridViewCheckBoxCell;
            Debug.Assert(cell != null, "The column specified is not a check box column");
            if (cell != null && (bool)cell.Value)
                yield return row;
        }
    }
}
0 голосов
/ 17 февраля 2011

Попробуйте:

'VB
Dim MyCheckBox As CheckBox = _
    CType(dgv.rows[i].cells[0].findcontrol("checkbox_id"), CheckBox)

C #:

//C#
CheckBox MyCheckBox =
    dgv.Rows[i].Cells[0].FindControl("checkbox_id") as CheckBox;

Свойство Value в ячейке относится к текстовому содержимому, когда ячейка не содержит никаких других элементов управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...