C# 位置1中没有行,但在调试模式下正确映射了该行
我正在尝试使用文本框中的参数填充数据表。然后我想从DataTable中获取值并填充WebForm上的其余文本框。到目前为止,我正在测试它,所以我只希望填充两个文本框,因为我仍然需要验证其他文本框。我使用的代码如下: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
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]
)。似乎您删除了一条注释。我的第一个评论就是针对这一点的。到