Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 位置1中没有行,但在调试模式下正确映射了该行_C#_Asp.net_Datatable_Datarow - Fatal编程技术网

C# 位置1中没有行,但在调试模式下正确映射了该行

C# 位置1中没有行,但在调试模式下正确映射了该行,c#,asp.net,datatable,datarow,C#,Asp.net,Datatable,Datarow,我正在尝试使用文本框中的参数填充数据表。然后我想从DataTable中获取值并填充WebForm上的其余文本框。到目前为止,我正在测试它,所以我只希望填充两个文本框,因为我仍然需要验证其他文本框。我使用的代码如下: try { ItemsSetTableAdapters.AbileneTableAdapter ds = new ItemsSetTableAdapters.AbileneTableAdapter(); ItemsSet.AbileneDataTable dt = n

我正在尝试使用文本框中的参数填充数据表。然后我想从DataTable中获取值并填充WebForm上的其余文本框。到目前为止,我正在测试它,所以我只希望填充两个文本框,因为我仍然需要验证其他文本框。我使用的代码如下:

try
{
    ItemsSetTableAdapters.AbileneTableAdapter ds = new ItemsSetTableAdapters.AbileneTableAdapter();
    ItemsSet.AbileneDataTable dt = new ItemsSet.AbileneDataTable();
    ds.Fill(dt, TxtItem.Text);
    con = true;

    if (con == true)
    {
        foreach(DataRow row in dt.Rows)
        {
            TxtItem.Text = dt.Rows[0]["t_item"].ToString();
            lbldesc.Text = dt.Rows[1]["t_idsc"].ToString();
        }
    }
}
catch (IfxException ifx)
{
    Console.WriteLine("Error:" + ifx.Message);
    Console.WriteLine("Source:" + ifx.Source);
    Console.WriteLine(ifx.StackTrace);
}
我得到的错误是在位置1没有行,我在调试模式下查看了表、列和列表,它正确地映射为[1]=[t_idsc]。为什么我会犯这个错误?请帮帮我

修复了我的问题,但只是想尽快澄清一些问题:

这是我以前执行相同功能的代码这有什么错

  if (dt.Rows.Count > 0)
      {
         TxtItem.Text = dt.Rows[0]["t_item"].ToString();
         lbldesc.Text = dt.Rows[1]["t_idsc"].ToString();
       }

您可以在位置1处有一行,但在位置2处可能没有一行。请记住,rows集合是基于零的。所以当你这样做的时候:

TxtItem.Text = dt.Rows[0]["t_item"].ToString();
lbldesc.Text = dt.Rows[1]["t_idsc"].ToString();
您正在将
TxtItem.Text
设置为第一行的“t_项”。但是您正在将
lbldesc.Text
设置为第二行的“t_idsc”

相反,使用
foreach
循环中的row变量

foreach(DataRow row in dt.Rows)
{
    TxtItem.Text = row["t_item"].ToString();
    lbldesc.Text = row["t_idsc"].ToString();
}
请注意,对于DataTable中的每个DataRow,这些标签的值都将被覆盖。因此,您将在这些标签中看到DataTable中最后一行的值。因此,您可能需要修改您的逻辑

如果只想获取第一行的值,只需将第一行的行号0硬编码为行集合的索引

if(dt.Rows.Count > 0)
{
    TxtItem.Text = dt.Rows[0]["t_item"].ToString();
    lbldesc.Text = dt.Rows[0]["t_idsc"].ToString();
}

您可以在位置1处有一行,但在位置2处可能没有一行。请记住,rows集合是基于零的。所以当你这样做的时候:

TxtItem.Text = dt.Rows[0]["t_item"].ToString();
lbldesc.Text = dt.Rows[1]["t_idsc"].ToString();
您正在将
TxtItem.Text
设置为第一行的“t_项”。但是您正在将
lbldesc.Text
设置为第二行的“t_idsc”

相反,使用
foreach
循环中的row变量

foreach(DataRow row in dt.Rows)
{
    TxtItem.Text = row["t_item"].ToString();
    lbldesc.Text = row["t_idsc"].ToString();
}
请注意,对于DataTable中的每个DataRow,这些标签的值都将被覆盖。因此,您将在这些标签中看到DataTable中最后一行的值。因此,您可能需要修改您的逻辑

如果只想获取第一行的值,只需将第一行的行号0硬编码为行集合的索引

if(dt.Rows.Count > 0)
{
    TxtItem.Text = dt.Rows[0]["t_item"].ToString();
    lbldesc.Text = dt.Rows[0]["t_idsc"].ToString();
}

您可以在位置1处有一行,但在位置2处可能没有一行。请记住,rows集合是基于零的。所以当你这样做的时候:

TxtItem.Text = dt.Rows[0]["t_item"].ToString();
lbldesc.Text = dt.Rows[1]["t_idsc"].ToString();
您正在将
TxtItem.Text
设置为第一行的“t_项”。但是您正在将
lbldesc.Text
设置为第二行的“t_idsc”

相反,使用
foreach
循环中的row变量

foreach(DataRow row in dt.Rows)
{
    TxtItem.Text = row["t_item"].ToString();
    lbldesc.Text = row["t_idsc"].ToString();
}
请注意,对于DataTable中的每个DataRow,这些标签的值都将被覆盖。因此,您将在这些标签中看到DataTable中最后一行的值。因此,您可能需要修改您的逻辑

如果只想获取第一行的值,只需将第一行的行号0硬编码为行集合的索引

if(dt.Rows.Count > 0)
{
    TxtItem.Text = dt.Rows[0]["t_item"].ToString();
    lbldesc.Text = dt.Rows[0]["t_idsc"].ToString();
}

您可以在位置1处有一行,但在位置2处可能没有一行。请记住,rows集合是基于零的。所以当你这样做的时候:

TxtItem.Text = dt.Rows[0]["t_item"].ToString();
lbldesc.Text = dt.Rows[1]["t_idsc"].ToString();
您正在将
TxtItem.Text
设置为第一行的“t_项”。但是您正在将
lbldesc.Text
设置为第二行的“t_idsc”

相反,使用
foreach
循环中的row变量

foreach(DataRow row in dt.Rows)
{
    TxtItem.Text = row["t_item"].ToString();
    lbldesc.Text = row["t_idsc"].ToString();
}
请注意,对于DataTable中的每个DataRow,这些标签的值都将被覆盖。因此,您将在这些标签中看到DataTable中最后一行的值。因此,您可能需要修改您的逻辑

如果只想获取第一行的值,只需将第一行的行号0硬编码为行集合的索引

if(dt.Rows.Count > 0)
{
    TxtItem.Text = dt.Rows[0]["t_item"].ToString();
    lbldesc.Text = dt.Rows[0]["t_idsc"].ToString();
}

在我的问题中,我附加了另一种方法,但我仍然得到了相同的错误,所以请你向我澄清哪里出了问题,伙计。有点,但不完全是这样。见我的编辑上面。使用
foreach
循环时,该循环将为您提供一个
DataRow
。如果没有循环,您需要自己获取
DataRow
(即
dt.Rows[0]
)。似乎您删除了一条注释。我的第一个评论就是针对这一点的。对于您的第二个注释,使用
dt.Rows[0]
[0]
部分告诉它您想要Rows集合的索引0,也称为第一行<代码>[1]表示需要行集合的索引1或第二行。因为你没有第二行,它抛出了一个错误。在我的问题中,我附加了另一个方法,但我仍然得到了相同的错误,所以请你向我澄清哪里出了问题,伙计。有点,但不完全是这样。见我的编辑上面。使用
foreach
循环时,该循环将为您提供一个
DataRow
。如果没有循环,您需要自己获取
DataRow
(即
dt.Rows[0]
)。似乎您删除了一条注释。我的第一个评论就是针对这一点的。对于您的第二个注释,使用
dt.Rows[0]
[0]
部分告诉它您想要Rows集合的索引0,也称为第一行<代码>[1]表示需要行集合的索引1或第二行。因为你没有第二行,它抛出了一个错误。在我的问题中,我附加了另一个方法,但我仍然得到了相同的错误,所以请你向我澄清哪里出了问题,伙计。有点,但不完全是这样。见我的编辑上面。使用
foreach
循环时,该循环将为您提供一个
DataRow
。如果没有循环,您需要自己获取
DataRow
(即
dt.Rows[0]
)。似乎您删除了一条注释。我的第一个评论就是针对这一点的。到