0

データ グリッド ビューでは、行をループして、チェックされたチェックボックスを含む行を取得する必要があります dgv.rows[i].cells[0].valueは両方のケースで空を返します。

4

3 に答える 3

0

試す:

'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 プロパティはテキスト コンテンツを参照します。

于 2011-02-17T14:42:12.280 に答える
0
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;
        }
    }
}
于 2011-02-19T16:08:54.253 に答える
0

チェックボックスにデータが含まれていない場合、結果は null 値になります。値がnullではないと仮定して、ループ内の値を解析でき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() );
}
于 2011-02-17T16:58:29.510 に答える