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

C#Winforms DataTable找不到具有指定id的行,c#,.net,winforms,datatable,find,C#,.net,Winforms,Datatable,Find,我有一个数据表。我向该数据表添加一行。我想把datagridview所选行的值放到数据表绑定到的某个文本框中。在我的datagridview选择更改方法中,我调用datatable的行集合的find方法。但它给了我NullReferenceException private void dgvRecipeMaterial_SelectionChanged(object sender, EventArgs e) { if(dgvRecipeMa

我有一个数据表。我向该数据表添加一行。我想把datagridview所选行的值放到数据表绑定到的某个文本框中。在我的datagridview选择更改方法中,我调用datatable的行集合的find方法。但它给了我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方法无法找到它。

DataTable.Rows.find
method从
DataTable.PrimaryKey
属性中按列搜索行。
检查datatable primarykey是否包含
ID
值所在的列。

如果未设置
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;
                .
                .

哪一行代码为您提供了
NullReferenceException
object[]items=dtreceetemalzemejoin.Rows.Find(id).ItemArray显示代码如何将数据获取到
dtreceetemalzemejoin
如果
PrimaryKey
包含
id
值所在的列,则代码可以正常工作me@MOD“id”列是否也键入为int?