DropDownList尽管看起来已经填充,但没有显示任何值

时间:2013-02-25 16:50:14

标签: c# asp.net

我正在从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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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();
}

答案 2 :(得分:0)

您需要在instrumentsDropDown.DataBind声明后调用foreach

答案 3 :(得分: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();
        }
    }
}