簡體   English   中英

獲取DataGridView復選框單元格值?

[英]Get DataGridView checkbox cell value?

我在這里遇到一個奇怪的問題。

我有一個3列數據網格,由數據庫連接填充。 到現在為止還挺好。

我有一個額外的列,復選框類型。 我需要獲得它在其上執行批量操作的價值。 這是一個問題:

選擇所有單元格后,它可以正常工作。 但是當用戶選擇不是第一個的任何單元格時,軟件會給我一個對象引用異常。

這是代碼

public List<String> GetSelected()
{
    List<String> selected = new List<String>();
    foreach(DataGridViewRow row in datagrid.rows)
    {
        if ((Boolean)row.Cells[wantedCell].Value == true)
        {
            selected.Add(row.Cells[anotherCell]);
        }
    }
}

我跟蹤if-test的失敗,拋出異常,因為單元格的值被讀為null。

任何一個人?

謝謝

嘗試這個:

public List<String> GetSelected()
{
    List<String> selected = new List<String>();
    foreach(DataGridViewRow row in datagrid.Rows)
    {
        object value = row.Cells[wantedCell].Value;
        if (value != null && (Boolean)value)
        {
            selected.Add(row.Cells[anotherCell]);
        }
    }
}

這對我不起作用(拋出轉換為布爾值的異常)。

我相信這可以做到這一點:

foreach (DataGridViewRow row in dgv.SelectedRows)
{
    bool b = row.Cells[0].Value == DBNull.Value ? false : (bool)row.Cells[0].Value;
    ...
 }

if (row.Cells[wantedCell].Value == DBNull.Value ? false : (bool)row.Cells[wantedCell].Value == true)替換第6行,使其成為:

public List<String> GetSelected()
{
    List<String> selected = new List<String>();
    foreach(DataGridViewRow row in datagrid.rows)
    {
        if (row.Cells[wantedCell].Value == DBNull.Value ? false : (bool)row.Cells[wantedCell].Value == true)
        {
            selected.Add(row.Cells[anotherCell]);
        }
    }
}

datagridview中“unchecked”checkboxcell的默認值為DBNull。 您可以通過設置CheckBoxColumn FalseValue屬性在其列中更改此值:

DataGridViewCheckBoxColumn CheckCol = new DataGridViewCheckBoxColumn();
CheckCol.FalseValue = false;

這將解決您的單元格被讀取為null的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM