0

我正在从 XML 文档中读取设置,将其转​​换为字符串数组,然后循环遍历每个字符串并将它们添加到DropDownList. 一切似乎都运行良好,直到我真正去看看DropDownList它本身。无论我做什么DropDownList都是空的,即使当我通过我的代码进行调试时,一切似乎都完美地添加了自己。如果有人能解释一下为什么尽管从代码的角度来看它正在被填充,但什么都没有显示,我将不胜感激。

我的代码可以在下面找到(请注意,我也尝试通过数据绑定填充它,但我仍然遇到同样的问题。):

public class InstrumentDropDownList : DropDownList
{
   public InstrumentDropDownList()
    {
        PopulateDropDown();
    }

    public void PopulateDropDown()
    {
        string unsplitList = Fabric.SettingsProvider.ReadSetting<string>("Setting.Location");
        string[] instrumentList = unsplitList.Split(',');

        DropDownList instrumentsDropDown = new DropDownList();

        if (instrumentList.Length > 0)
        {
            foreach (string instrument in instrumentList)
            {
                instrumentsDropDown.Items.Add(instrument);
            }
        }
    }
}   
4

4 回答 4

1

当您从同一个类继承时,为什么要创建 DropDownList 的新实例。你不应该做类似的事情。base.Items.Add() ??

于 2013-02-25T17:12:02.780 回答
1

您正在创建一个新的 DropDownList 并向其中添加项目。问题是,您没有对您创建的新 DropDownList 做任何事情。您只是将项目添加到错误的列表中。

    public void PopulateDropDown()
    {
        string unsplitList = Fabric.SettingsProvider.ReadSetting<string>("Setting.Location");
        string[] instrumentList = unsplitList.Split(',');

        if (instrumentList.Length > 0)
        {
            foreach (string instrument in instrumentList)
            {
                this.Items.Add(instrument);
            }
        }
    }

作为替代方案,您也应该能够做到这一点。您显然希望进行更多验证,但这只是为了表明您可以使用 DataSource/DataBind

public void PopulateDropDown()
{
    this.DataSource = fabric.SettingsProvider.ReadSetting<string>("Setting.Location").Split(',');
    this.DataBind();
}
于 2013-02-25T17:43:10.687 回答
0

你需要instrumentsDropDown.DataBindforeach声明后打电话..

于 2013-02-25T16:58:10.970 回答
0
public class InstrumentDropDownList : DropDownList
{
   public InstrumentDropDownList()
    {
        PopulateDropDown();
    }

    public void PopulateDropDown()
    {
        string unsplitList = Fabric.SettingsProvider.ReadSetting<string>("Setting.Location");
        string[] instrumentList = unsplitList.Split(',');

        DropDownList instrumentsDropDown = new DropDownList();

        if (instrumentList.Length > 0)
        {
            foreach (string instrument in instrumentList)
            {
                instrumentsDropDown.Items.Add(instrument);
            }
            instrumentsDropDown.DataBind();
        }
    }
}   
于 2013-02-25T17:03:20.530 回答