ASP.NET Plusieurs contrôles avec le même ID " x " ont été trouvés. FindControl

L'erreur suivante se produit

Plusieurs contrôles avec le même ID 'ltlItemCode' ont été trouvés. FindControl exige que des contrôles ont des Identifiants uniques.

Cette Erreur ne se produit pas sur le chargement de la page, mais lorsque je change la valeur d'une liste déroulante qui a AutoPostBack="true".

Code est

    //Number of Services
numberofServices = Int32.Parse(DCCFunctions.GetNumServicesPerRoom(roomId.ToString()));
additionalServices = new UserControls_AdditionalService[numberofServices - 1];
String htmlTable = String.Empty;
Int32 cell = 1;
Int32 rows = numberofServices;
Int32 cols = 4;
TableHeaderRow h = new TableHeaderRow();
TableHeaderCell hc1 = new TableHeaderCell();
hc1.Text = "Item Description";
h.Cells.Add(hc1);
TableHeaderCell hc2 = new TableHeaderCell();
hc2.Text = "Item Price";
h.Cells.Add(hc2);
TableHeaderCell hc3 = new TableHeaderCell();
hc3.Text = "Item Quantity";
h.Cells.Add(hc3);
TableHeaderCell hc4 = new TableHeaderCell();
hc4.Text = "Item Sub Total";
h.Cells.Add(hc4);
Table1.Rows.Add(h);
//Open database connection
DBConnection conn = new DBConnection();
//Retrieve details
SqlCommand sqlGetDetails = conn.SetStoredProcedure("spGetAdditionalServicesDetails");
DBConnection.AddNewParameter(sqlGetDetails, "@roomId", ParameterDirection.Input, SqlDbType.Int, roomId);
try
{
conn.Open();
SqlDataReader reader_list = sqlGetDetails.ExecuteReader();
if (reader_list.HasRows)
{
while (reader_list.Read())
{
//returnVal = reader_list["Num"].ToString();
htmlTable += "<tr>" + Environment.NewLine;
TableRow r = new TableRow();
additionalServices[cell - 1] = (ASP.usercontrols_additionalservice_ascx)LoadControl("~/UserControls/AdditionalService.ascx");
Literal ItemCode = (Literal)additionalServices[cell - 1].FindControl("ltlItemCode") as Literal;
ItemCode.Text = reader_list["itemDescription"].ToString();
Literal ItemPrice = (Literal)additionalServices[cell - 1].FindControl("ltlItemPrice") as Literal;
ItemPrice.Text = "€" + reader_list["unitPrice"].ToString();
Literal ItemTotal = (Literal)additionalServices[cell - 1].FindControl("ltlTotalPrice") as Literal;
ItemTotal.Text = "€" + "0";
TableCell ItemCodeCell = new TableCell();
ItemCodeCell.Controls.Add((Literal)additionalServices[cell - 1].FindControl("ltlItemCode") as Literal);
TableCell ItemCodePriceCell = new TableCell();
ItemCodePriceCell.Controls.Add((Literal)additionalServices[cell - 1].FindControl("ltlItemPrice") as Literal);
TableCell ItemCodeTotalCell = new TableCell();
ItemCodeTotalCell.Controls.Add((Literal)additionalServices[cell - 1].FindControl("ltlTotalPrice") as Literal);
TableCell c = new TableCell();
DropDownList qtyList = (DropDownList)additionalServices[cell - 1].FindControl("qtyList") as DropDownList;
qtyList.Items.Add(new System.Web.UI.WebControls.ListItem("Select Quantity...", "0"));
qtyList.DataBind();
for (Int32 count = 1; count < 101; count++)
{
qtyList.Items.Add(new System.Web.UI.WebControls.ListItem(count.ToString(),count.ToString()));
}
//c.ColumnSpan = 5;
c.Controls.Add((DropDownList)additionalServices[cell - 1].FindControl("qtyList") as DropDownList);
r.Cells.Add(ItemCodeCell);
r.Cells.Add(ItemCodePriceCell);
r.Cells.Add(c);
r.Cells.Add(ItemCodeTotalCell);
//r.Controls.Add(additionalServices[cell - 1]);
//cell += 1;
//Add the row
Table1.Rows.Add(r);
}
}
reader_list.Close();
}
catch (Exception ex)
{
M1Utils.ErrorHandler(ex);
}
finally
{
conn.Close();
}`
Tout progrès en la matière?

OriginalL'auteur | 2009-02-16