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