![](/img/trans.png)
[英]column count property cannot be set on a databound datagridview control c#
[英]C# datagridview set databound column value to a chosen default one
我有一個綁定到自定義對象列表的DataGridView。 列綁定到double數據類型,當我嘗試清空其內容(為null)時,它將引發數據錯誤,指示DbNull無法轉換為Double。 我要完成的是,當用戶為數據綁定列輸入空值時,我想將其設置為默認的通用值,例如3.0。
我可以處理dataerror並在那里替換值,但這似乎是一個棘手的解決方案。 建議的處理方式是什么?
編輯:
這是我的數據類。 上面提到的double數據類型是USL。
public class SPCModelDTO
{
public string ProcessName { get; set; }
public string CustomerName { get; set; }
public string ModelName { get; set; }
public double USL { get; set; }
}
這是我的數據綁定代碼
dgvModel.DataSource = new BindingList<SPCModelDTO>(modelList);
匹配屬性名稱是在設計器中針對數據類屬性聲明的。
附帶說明一下, 我無法將USL的數據類型更改為可為null的double 。
創建一個將綁定到DataGrdiView
的ViewModel。
在ViewModel中,您可以將USL
包裝為可空類型
public class SPCModelDTOViewModel: INotifyPropertyChanged
{
private SPCModelDTO _Model;
public double? USL
{
get { return _Model.USL;}
set
{
if(value.HasValue == false)
_Model.USL = 3.0;
else
_Model.USL = value;
this.RaisePropertyChangedEvent();
}
}
//Other model's properties
}
行this.RaisePropertyChangedEvent();
將通知View(DataGridView)有關更改,並將empty(null)值更改為默認值1
當然,您的ViewModel類必須實現INotifyPropertyChanged
如何:實現INotifyPropertyChanged接口
對於數據綁定列,可以在DatagridViewColumn.DefaultCellStyle
設置DataSourceNullValue
dgvModel.DataSource = data;
var col = dgvModel.Columns["USL"];
col.DefaultCellStyle.DataSourceNullValue = 3;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.