簡體   English   中英

C#datagridview將數據綁定列值設置為選定的默認值

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

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