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方法找不到。
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;
.
.