我有一个使用dictioanry填充的列表框。当我使用以下代码迭代所选项目时,它始终只显示所选的第一个项目 - 即使未选择第一个项目。
您是否遇到过这种情况?
你能帮忙吗?
当我使用字典进行绑定时会发生此问题。另一方面,通用列表工作正常。
private void PopulateListBox2()
{
List<string> subjectList = new List<string>();
subjectList.Add("Maths");
subjectList.Add("Science");
ListBox1.DataSource = subjectList;
ListBox1.DataBind();
}
如果值是唯一的,它甚至可以正常工作。但在我的场景中,值是相同的;只有关键变化。以下作品
private void PopulateListBox5()
{
Dictionary<string, string> resultDictionary = new Dictionary<string, string>();
resultDictionary.Add("Maths", "Lijo1");
resultDictionary.Add("Science", "Lijo2");
ListBox1.DataValueField = "Value";
ListBox1.DataTextField = "Key";
ListBox1.DataSource = resultDictionary;
ListBox1.DataBind();
}
^^^^^^^^^^^^^^^^^^^ 以下代码存在问题。
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
PopulateListBox1();
ListBox1.SelectionMode = ListSelectionMode.Multiple;
}
}
private void PopulateListBox1()
{
Dictionary<string, string> resultDictionary = new Dictionary<string, string>();
resultDictionary.Add("Maths", "Lijo");
resultDictionary.Add("Science", "Lijo");
ListBox1.DataValueField = "Value";
ListBox1.DataTextField = "Key";
ListBox1.DataSource = resultDictionary;
ListBox1.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
MakeList1Items();
}
private void MakeList1Items()
{
string test = null;
foreach (ListItem item in ListBox1.Items)
{
if (item.Selected == true)
{
if(string.IsNullOrEmpty(test))
{
test=item.Text;
}
else
{
test = test +", " + item.Text;
}
}
}
Response.Write(test);
}
}
由于
Lijo
答案 0 :(得分:0)
您对ListBox的DataValueField
和DataTextField
采取了错误的方法。我不确定为什么,但它们必须是这样的:
ListBox1.DataValueField = "Key";
ListBox1.DataTextField = "Value";
所以,实际上,你最好不要使用Dictionary来进行这种绑定。也许试试List<KeyValuePair<string, string>>
。