Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DropDownList的SelectedValue设置不正确_C#_Visual Studio_Drop Down Menu_Umbraco_Selectedvalue - Fatal编程技术网

C# DropDownList的SelectedValue设置不正确

C# DropDownList的SelectedValue设置不正确,c#,visual-studio,drop-down-menu,umbraco,selectedvalue,C#,Visual Studio,Drop Down Menu,Umbraco,Selectedvalue,我正在使用一些来自代码隐藏的控件以编程方式填充ascx面板控件,但我无法理解为什么“SelectedValue”属性没有设置为我期望的值 我有以下代码: int i = 0; { var row = new Panel {ID = string.Format("row_{0}", i)}; var ddl = new DropDownList(); ddl.Items.AddRange(_templateDdl.Items.OfType<ListItem>()

我正在使用一些来自代码隐藏的控件以编程方式填充ascx面板控件,但我无法理解为什么“SelectedValue”属性没有设置为我期望的值

我有以下代码:

int i = 0;
{
    var row = new Panel {ID = string.Format("row_{0}", i)};
    var ddl = new DropDownList();
    ddl.Items.AddRange(_templateDdl.Items.OfType<ListItem>().ToArray());
    ddl.SelectedValue = "21246";
    ddl.ID = string.Format("ddl_{0}", i);

    row.Controls.Add(ddl);
    Rows.Controls.Add(row);
}
i = 1;
{
    var row = new Panel {ID = string.Format("row_{0}", i)};
    var ddl = new DropDownList();
    ddl.Items.AddRange(_templateDdl.Items.OfType<ListItem>().ToArray());
    ddl.SelectedValue = "21240";
    ddl.ID = string.Format("ddl_{0}", i);

    row.Controls.Add(ddl);
    Rows.Controls.Add(row);
}
inti=0;
{
var row=newpanel{ID=string.Format(“row{0}”,i)};
var ddl=新的DropDownList();
ddl.Items.AddRange(_templatedddl.Items.OfType().ToArray());
ddl.SelectedValue=“21246”;
ddl.ID=string.Format(“ddl{0}”,i);
行.控件.添加(ddl);
Rows.Controls.Add(行);
}
i=1;
{
var row=newpanel{ID=string.Format(“row{0}”,i)};
var ddl=新的DropDownList();
ddl.Items.AddRange(_templatedddl.Items.OfType().ToArray());
ddl.SelectedValue=“21240”;
ddl.ID=string.Format(“ddl{0}”,i);
行.控件.添加(ddl);
Rows.Controls.Add(行);
}
问题在于,即使ID设置正确,第一个ID的SelectedValue始终与最后一个ID的SelectedValue相同

是否有任何方法可以监视控件,并使Visual Studio中断,以防值被其他代码更改

欢迎提出任何其他建议:)

可能应该提到,这是在翁布拉科解决方案中完成的,以防有任何意义


感谢

尽管SelectedValue属性集属于DDL,但它实际上是在ListItem上设置的,在本例中,ListItem是从模板DDL复制的,因此是对同一数组的引用

我编写了以下代码作为解决方案:

// Pass the template DDL to this function which will create a new separate List:
private List<ListItem> GetListItems(DropDownList ddl)
{
    return (from ListItem srcItem in ddl.Items select new ListItem(srcItem.Text, srcItem.Value)).ToList();
}

// Retrieve the items from the List and assign them to the DropDownList:
ddl1.Items.AddRange(GetListItems(_templateDdl).ToArray());
//将模板DDL传递给此函数,该函数将创建一个新的单独列表:
私有列表GetListItems(DropDownList ddl)
{
返回(从ddl.Items中的ListItem srcItem选择新ListItem(srcItem.Text,srcItem.Value)).ToList();
}
//从列表中检索项目并将其分配到DropDownList:
ddl1.Items.AddRange(GetListItems(_templatedddl.ToArray());

查看DDL的属性时,是否有默认值?DDL是由代码创建的。在调试中单步执行时,我可以验证SelectedValue是否设置正确。在添加ddl后,它的行为就好像其他东西在更改ddl一样。看起来,即使SelectedValue属性集属于ddl,但它实际上是在ListItem上设置的,在本例中,ListItem是从模板ddl复制的,因此是对同一数组的引用。