[英]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.