C#Winforms DataTable找不到具有指定id的行

本文关键字:id 的行 DataTable 找不到 C#Winforms | 更新日期: 2023-09-27 18:27:03

我有一个数据表。我在那个数据表中加了一行。我想把datagridview所选行的值拿到数据表绑定到的某个文本框中。在我的datagridview选择更改方法中,我调用findmethodofrowsofdatatable集合。但它给了我NullReferenceException。

        private void dgvRecipeMaterial_SelectionChanged(object sender, EventArgs e)
        {
            if(dgvRecipeMaterial.SelectedRows.Count > 0 && isDgvRecipeMaterialReady)
            {
                int rowIndex = dgvRecipeMaterial.SelectedRows[0].Index;
                int id = Convert.ToInt32(dgvRecipeMaterial.SelectedRows[0].Cells[0].Value);
                object[] data = dtrecetemalzemejoin.Rows[0].ItemArray;
                object[] items = dtrecetemalzemejoin.Rows.Find(id).ItemArray;
                .
                .
                .
                .

我通过调试器查看了我的id。其值为1166。当我调试时,我看到数据数组中有一个id为1166的项。但是find方法找不到id 1166。如果数据表中有多个记录,则没有问题。问题出在哪里。数据数组有id,但find方法找不到。

C#Winforms DataTable找不到具有指定id的行

DataTable.Rows.Find方法从DataTable.PrimaryKey属性逐行逐列搜索
检查数据表主键是否包含ID值所在的列。
来自MSDN:DataTable.PrimaryKey
如果未设置PrimaryKey列。然后在使用Find方法之前,您将其设置为:

dtrecetemalzemejoin.PrimaryKey = {dtrecetemalzemejoin.Columns[0]};
//or may be better will be using a name of column
dtrecetemalzemejoin.PrimaryKey = {dtrecetemalzemejoin.Columns["IDColumn"]};

你能试试下面的代码吗?我也得到了相同的错误

 private void dgvRecipeMaterial_SelectionChanged(object sender, EventArgs e)
        {
            if(dgvRecipeMaterial.SelectedRows.Count > 0 && isDgvRecipeMaterialReady)
            {
                int rowIndex = dgvRecipeMaterial.SelectedRows[0].Index;
                string id = Convert.ToString(dgvRecipeMaterial.SelectedRows[0].Cells[0].Value);
                object[] data = dtrecetemalzemejoin.Rows[0].ItemArray;
                object[] items = dtrecetemalzemejoin.Rows.Find(id).ItemArray;
                .
                .