[英]Duplication of data on Webpage Asp.net MVC
当我在数据库表中输入项目并将这些项目添加到它不断重复的网页上时,我遇到了这个问题。 调试后,我认识到这是这些items.Add(item);。 该存储过程的确返回数据库中的项目数量以及请购单编号上的项目数量。 这就是在这里输入图像描述的样子,这也是我期望在这里输入图像描述的样子。 我只输入了两个项目,而当我输入了四个项目时
储存程序
@Req_No varchar (50)
AS
BEGIN
SELECT a.ITEMNMBR, a.ITEMDESC, ab.employee_id, ab.department,ab.employee_name,quantity_requested,b.expense_acc, c.ACTDESCR+'/'+c.ACTNUMBR_1+'-'+c.ACTNUMBR_2 [Expense_Acc],
b.unit_of_measure
FROM [TWCL].[dbo].IV00101 a inner Join RequisitionItem b on a.ITEMNMBR = b.item_no
Inner Join Requisition ab
on ab.Req_No = b.Req_No
Inner Join [TWCL].dbo.GL00100 c
on b.expense_acc = c.ACTINDX
where b.Req_No = @Req_No
模型
public List<Item> getRequestItemByRquisition(string Req_No)
{
List<Item> items = new List<Item>();
SqlConnection TWCLOPConnect = new SqlConnection(connectionString.ToString());
SqlCommand itemscommand = new SqlCommand();
SqlDataReader itemRdr;
itemscommand.CommandText = "requisition_sp_getItemNum ";
itemscommand.CommandType = CommandType.StoredProcedure;
itemscommand.Connection = TWCLOPConnect;
itemscommand.Parameters.Add("@Req_No", SqlDbType.VarChar).Value = Req_No;
try
{
TWCLOPConnect.Open();
itemRdr = itemscommand.ExecuteReader();
while (itemRdr.Read())
{
Item item = new Item();
item.itemNumber = itemRdr.GetString(0);
item.description = itemRdr.GetString(1);
item.price = Convert.ToDouble(itemRdr[3]);
item.quantity = Convert.ToDouble(itemRdr[4]);
item.expense_account.index = itemRdr.GetInt32(5);
item.expense_account.account_desc = itemRdr.GetString(6);
item.selecteduomtext = itemRdr.GetString(8);
items.Add(item);
}
itemRdr.Close();
}
catch (Exception ex)
{
throw ex;
}
finally
{
TWCLOPConnect.Close();
}
return items;
}
您的存储过程返回重复的行:
SELECT a.ITEMNMBR, a.ITEMDESC, ab.employee_id, ab.department,ab.employee_name,quantity_requested,b.expense_acc, c.ACTDESCR+'/'+c.ACTNUMBR_1+'-'+c.ACTNUMBR_2 [Expense_Acc],
b.unit_of_measure
FROM [TWCL].[dbo].IV00101 a inner Join RequisitionItem b on a.ITEMNMBR = b.item_no
Inner Join Requisition ab
on ab.Req_No = b.Req_No
Inner Join [TWCL].dbo.GL00100 c
on b.expense_acc = c.ACTINDX
where b.Req_No = @Req_No
在sql中运行此存储过程,您将看到它。
有时不匹配或使用内部联接从数据库返回的额外数据很容易。 一次删除内部连接并检查。
所有这些代码行都可以:
itemRdr = itemscommand.ExecuteReader();
while (itemRdr.Read())
{
Item item = new Item();
item.itemNumber = itemRdr.GetString(0);
item.description = itemRdr.GetString(1);
item.price = Convert.ToDouble(itemRdr[3]);
item.quantity = Convert.ToDouble(itemRdr[4]);
item.expense_account.index = itemRdr.GetInt32(5);
item.expense_account.account_desc = itemRdr.GetString(6);
item.selecteduomtext = itemRdr.GetString(8);
items.Add(item);
}
被读取返回的行,并且仍在读取时,它将添加行。 这意味着您的存储过程返回了重复的行数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.