无法获取动态创建的控件的值c#

时间:2018-01-08 07:28:48

标签: c# asp.net .net c#-4.0 dynamic-controls

我在按钮点击时创建了动态控件,但我无法检索动态创建的控件的值。我在面板中获得了动态控件的值。

pnlDepartment是Panel ID。

protected void btnValues_Click(object sender, EventArgs e)
{
    string strDDLValue = string.Empty;
    foreach (DropDownList ddl in pnlDepartment.Controls.OfType<DropDownList>())
    {
        strDDLValue = ddlName.SelectedItem.Text + "," + ddlLocation.SelectedItem.Text;
    }
}  

strDDLValue只有第一个下拉值,当它第二次循环时,它仍然需要第一个下拉值并且无法获得动态控制值。

如果我在某个地方犯了错误,请纠正我。

更新的代码:

 string strDDLValue = string.Empty;
            foreach (DropDownList ddl in pnlDepartment.Controls.OfType<DropDownList>())
            {
                strDDLValue = ddl.SelectedItem.Text;
            }

1 个答案:

答案 0 :(得分:0)

您还没有使用过dll变量。如果pnlDeportment中的foreach循环仅包含名称。您将不得不使用此方法。

protected void btnValues_Click(object sender, EventArgs e)   
{
    string strDDLValue = string.Empty;
    foreach (DropDownList ddl in pnlDepartment.Controls.OfType<DropDownList>())
    {
        strDDLValue = ddl.SelectedItem.Text
    }
}  

另外,您必须创建两个列表,添加名称的下拉列表和位置的下拉列表。

在页面的init处初始化您的列表。

List<DropDownList> ddlNames;
List<DropDownList> ddlLocations;

protected void btnValues_Click(object sender, EventArgs e)   
{ 
     if (dllNames.Count() == ddlLocations.Count())
     {
         for (int i = 0; i < ddlNames.Count(); i++)
         {
              strDDLValue = string.Format("{0},{1}", 
               ddlNames[i].SelectedItem.Text,
               ddlLocations[i].SelectedItem.Text );
         }
     }
}

确保通过以下方式获取所需的控件列表:

 int i = 0;
foreach (DropDownList ddl in pnlDepartment.Controls.OfType<DropDownList>())
{
    i++;
    ddl.SelectedItem.Text = string.Format("Found:{0}",i);
}