C#winform根据数据网格视图值筛选组合框项

本文关键字:筛选 组合 视图 网格 数据 数据网 C#winform | 更新日期: 2023-09-27 18:20:13

我有一个名为cmbCaseRemain的组合框,它的数据由代码从数据表中填充

cmbCaseRemain.DataSource = ce.GET_ALL_CASEREMAIN();
cmbCaseRemain.DisplayMember = "caseRemain";
cmbCaseRemain.ValueMember = "idCaseRemain";

我有一个名为dgv_CaseRemain的数据网格视图,它从另一个数据表中获取数据

DataTable dt = new DataTable();
dt = ce.GET_ALL_CASEREMAIN_FILTER(Convert.ToInt32(txtidCase.Text));
dgv_CaseRemain.DataSource = dt;

我正在使用组合框将项目添加到数据网格视图中。。。我想在每次添加后过滤组合框中的项目,这样用户就不能两次添加相同的值。。。所以我创建了一个带有参数的存储过程

CREATE PROC [dbo].[FILTER_CMB_CASEREMAIN]
    @ID int
AS
    SELECT 
        [idCaseRemain], [caseRemain]
    FROM 
        [dbo].[tblCaseRemain]
    LEFT OUTER JOIN 
        tblCase_Link_Remain ON idCaseRemain = idCaseRemain_L
    WHERE 
        [idCaseRemain] <> @ID;

当我点击时,使用一个代码来传递过滤组合框的参数

DataTable dt = new DataTable();
dt = ce.FILTER_CMB_CASEREMAIN(Convert.ToInt32(this.dgv_CaseRemain.CurrentRow.Cells[1].Value));
if (dt.Rows.Count > 0)
{
    cmbCaseRemain.DisplayMember = "caseRemain";
    cmbCaseRemain.ValueMember = "idCaseRemain";
    cmbCaseRemain.DataSource = dt;
}

但是我收到一个错误

对象引用未设置为对象的实例。

谢谢

(抱歉我的英语不好:-)

C#winform根据数据网格视图值筛选组合框项

好的。明白了。正如我所说,这是一个错误。使用以下代码。下面我添加了验证来检查空值。

int n = 0;
DataTable dt;
if (this.dgv_CaseRemain.CurrentRow.Cells[1].Value != null)
{
    if (int.TryParse(this.dgv_CaseRemain.CurrentRow.Cells[1].Value.ToString(), out n))
    {
        dt = ce.FILTER_CMB_CASEREMAIN(n);
    }
}
if (dt!=null && dt.Rows.Count > 0)
{
    cmbCaseRemain.DisplayMember = "caseRemain";
    cmbCaseRemain.ValueMember = "idCaseRemain";
    cmbCaseRemain.DataSource = dt;
}