我正在从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);
}
}
}
}
答案 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();
}
}
}