C# 具有相同ID的多个控件';ddl#U重量';被发现了。FindControl要求控件具有唯一的ID
我有一个错误:找到了多个ID为“ddl_-Weight”的控件。“查找控件”要求控件具有唯一的ID。这样我就不需要添加更多的客观文本框,下拉列表。 我必须为权重和实现添加目标、下拉列表C# 具有相同ID的多个控件';ddl#U重量';被发现了。FindControl要求控件具有唯一的ID,c#,asp.net,sql,C#,Asp.net,Sql,我有一个错误:找到了多个ID为“ddl_-Weight”的控件。“查找控件”要求控件具有唯一的ID。这样我就不需要添加更多的客观文本框,下拉列表。 我必须为权重和实现添加目标、下拉列表 private List<DropDownList> inputDropDownList; private List<DropDownList> inputDropDownList2; protected void btn_AddObjectives_Click(obje
private List<DropDownList> inputDropDownList;
private List<DropDownList> inputDropDownList2;
protected void btn_AddObjectives_Click(object sender, EventArgs e)
{
int rowCount = 0;
//initialize a session.
rowCount = Convert.ToInt32(Session["clicks"]);
rowCount++;
//In each button click save the numbers into the session.
Session["clicks"] = rowCount;
//Create the textboxes and labels each time the button is clicked.
for (int i = 0; i < rowCount; i++)
{
TextBox TxtBoxO = new TextBox();
TxtBoxO.TextMode = TextBoxMode.MultiLine;
DropDownList DDLW = new DropDownList();
DropDownList DDLA = new DropDownList();
inputDropDownList = new List<DropDownList>();
inputDropDownList2 = new List<DropDownList>();
Label lblO = new Label();
Label lblW = new Label();
Label lblA = new Label();
TxtBoxO.ID = "TextBoxO" + i.ToString();
DDLW.ID = "DDLW" + i.ToString();
DDLA.ID = "DDLA" + i.ToString();
inputDropDownList.Add(DDLW);
inputDropDownList2.Add(DDLA);
TxtBoxO.Width = 325;
DDLW.Height = 25;
DDLA.Height = 25;
DDLA.ID = "ddl_Achieved";
DDLA.Items.Add("Select");
DDLA.Items.Add("5");
DDLA.Items.Add("10");
DDLA.Items.Add("15");
DDLA.Items.Add("20");
DDLA.Items.Add("25");
DDLA.Items.Add("30");
DDLA.Items.Add("35");
DDLA.Items.Add("40");
DDLA.Items.Add("45");
DDLA.Items.Add("50");
DDLA.Items.Add("55");
DDLA.Items.Add("60");
DDLA.Items.Add("65");
DDLA.Items.Add("70");
DDLA.Items.Add("75");
DDLA.Items.Add("80");
DDLA.Items.Add("85");
DDLA.Items.Add("90");
DDLA.Items.Add("95");
DDLA.Items.Add("100");
DDLW.ID = "ddl_Weight";
DDLW.Items.Add("Select");
DDLW.Items.Add("5");
DDLW.Items.Add("10");
DDLW.Items.Add("15");
DDLW.Items.Add("20");
DDLW.Items.Add("25");
DDLW.Items.Add("30");
DDLW.Items.Add("35");
DDLW.Items.Add("40");
DDLW.Items.Add("45");
DDLW.Items.Add("50");
DDLW.Items.Add("55");
DDLW.Items.Add("60");
DDLW.Items.Add("65");
DDLW.Items.Add("70");
DDLW.Items.Add("75");
DDLW.Items.Add("80");
DDLW.Items.Add("85");
DDLW.Items.Add("90");
DDLW.Items.Add("95");
DDLW.Items.Add("100");
lblO.ID = "LabelO" + i.ToString();
lblW.Text = "LabelW" + i.ToString();
lblA.ID = "LabelA" + i.ToString();
lblO.Text = "Objective " + " " + (i + 1).ToString() + " : ";
lblW.Text = " Weightage" + " " + (i + 1).ToString() + " : ";
lblA.Text = " Achieved " + " " + (i + 1).ToString() + " : ";
//Add the labels and textboxes to the Panel.
Panel1.Controls.Add(lblO);
Panel1.Controls.Add(TxtBoxO);
Panel1.Controls.Add(lblW);
Panel1.Controls.Add(DDLW);
Panel1.Controls.Add(lblA);
Panel1.Controls.Add(DDLA);
}
私有列表输入下拉列表;
私有列表输入下拉列表2;
受保护的无效btn\u添加目标\u单击(对象发送者,事件参数e)
{
int rowCount=0;
//初始化会话。
rowCount=Convert.ToInt32(会话[“单击]);
行计数++;
//在每个按钮中,单击将数字保存到会话中。
会话[“单击”]=行数;
//每次单击按钮时创建文本框和标签。
对于(int i=0;i
错误很明显。您正在添加具有相同ID的多个控件,这是不允许的。请注意,您处于循环中:
for (int i = 0; i < rowCount; i++)
并为其分配ID:
DDLW.ID = "DDLW" + i.ToString();
DDLA.ID = "DDLA" + i.ToString();
这些ID可能是唯一的。但是,您可以用不唯一的ID覆盖它们:
DDLA.ID = "ddl_Achieved";
DDLW.ID = "ddl_Weight";
然后将它们添加到页面:
Panel1.Controls.Add(DDLW);
Panel1.Controls.Add(DDLA);
顾名思义,ID
的目的是唯一地标识一个对象。就像HTML中的ID
属性一样,如果在一个页面中多次重复使用同一个属性,那么行为将变得不明确。系统(在这种情况下,无论您在哪里使用FindControl()
)预期有0或1个元素具有任何给定的ID
值。您创建的元素多于1个,这是无效的
您可以删除设置非唯一ID的行,并保留设置唯一ID的行。明白了,我明白您的意思。谢谢David
Panel1.Controls.Add(DDLW);
Panel1.Controls.Add(DDLA);