DropDownList没有显示任何值,尽管看起来已填充
本文关键字:看起来 填充 显示 任何值 DropDownList | 更新日期: 2023-09-27 18:00:55
我正在从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);
}
}
}
}
您正在创建一个新的DropDownList并向其中添加项目。问题是,您没有对创建的新DropDown列表执行任何操作。您只是将项目添加到了错误的列表中。
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();
}
从同一个类继承时,为什么要创建DropDownList的新实例。你不应该做这样的事吗。基础Items.Add((??
您需要在foreach
语句之后调用instrumentsDropDown.DataBind
。。
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();
}
}
}