[英]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.