繁体   English   中英

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

[英]Unable to get values of dynamically created controls c#

我已经在单击按钮时创建了动态控件,但无法检索动态创建的控件的值。 我正在面板内获取动态控件的值。

pnlDepartment是面板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;
            }

您尚未使用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
    }
}  

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

在页面的初始位置初始化列表。

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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM