所以我有一个列表框,里面有5个不同的人。当我点击列表中的第一个人时,文本会出现在文本框中。如果我点击另一个人,我们会在文本框中输入另一个文本等。
这是我的清单:
private List<string> personsList = new List<string>();
personsList.Add("Person1");
personsList.Add("Person2");
personsList.Add("Person3");
personsList.Add("Person4");
personsList.Add("Person5");
ListBoxPersons.DataSource = personsList;
ListBoxPersons.DataBind();
所以,如果我点击Person1,我们会在文本框中看到文本“Andersson”。如果我们点击Person2,我们会在文本框中看到文本“Smith”。
我试过这个:
foreach (ListItem item in ListBoxPersons.Items)
{
if (item.Text == "Person1")
{
TextBoxPersons.Text = "Andersson";
}
else if (item.Text == "Person2")
{
TextBoxPersons.Text = "Smith";
}
}
等等,但那不起作用。我已经尝试了很多其他方法,但遗憾的是也没有运气。 这可能看起来很愚蠢,但这只是一个练习。
C#或JQuery适合我。提前谢谢。
答案 0 :(得分:1)
您当前的代码不会检查当前选择的内容,只检查列表中的每个项目。您需要创建一个SelectedIndexChanged事件来处理选择不同的事件。这样的事情example on MSDN。
基本上,将事件添加到您的asp.net ListBox控件中,然后使用相同的名称在后面的代码中创建事件:
private void ListBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
// Get the currently selected item in the ListBox.
string curItem = listBox1.SelectedItem.ToString();
switch(curItem)
{
case "Person1":
TextBoxPersons.Text = "Andersson";
break;
case "Person2":
TextBoxPersons.Text = "Smith";
break;
//Add more cases and perhaps a default...
}
}
<强> 更新 强>
刚看到@Banana和@PhilipB的评论。如上所述,您需要确保在Page_Load事件中将if(!IsPostback)中的列表框初始化包装起来,以确保不会丢失您选择项目的事实。
答案 1 :(得分:0)
@ sr28建议的上述代码工作正常我已经尝试过了。 这是观点:
<asp:ListBox ID="ListBox1" runat="server" AutoPostBack="true"
onselectedindexchanged="ListBox1_SelectedIndexChanged"> </asp:ListBox>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>`
on pageload bind the listbox:
`if (!IsPostBack)
{
personsList.Add("Person1");
personsList.Add("Person2");
personsList.Add("Person3");
personsList.Add("Person4");
personsList.Add("Person5");
ListBox1.DataSource = personsList;
ListBox1.DataBind();
}`
这就在onSelectedIndexChanged:
上protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string curItem = ListBox1.SelectedItem.ToString();
switch (curItem)
{
case "Person1":
TextBox1.Text = "Andersson";
break;
case "Person2":
TextBox1.Text = "Smith";
break;
}
}
答案 2 :(得分:0)
背后的代码
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Dictionary<string, string> personsList = new Dictionary<string, string>();
personsList.Add("Andersson", "Person1");
personsList.Add("Smith", "Person2");
personsList.Add("Name 3", "Person3");
personsList.Add("Name 4", "Person4");
personsList.Add("Name 5", "Person5");
ListBoxPersons.DataTextField = "Value";
ListBoxPersons.DataValueField = "Key";
ListBoxPersons.DataSource = personsList;
ListBoxPersons.DataBind();
}
}
protected void ListBoxPersons_SelectedIndexChanged(object sender, EventArgs e)
{
TextBox1.Text = ListBoxPersons.SelectedValue;
}
页
<asp:ListBox ID="ListBoxPersons" runat="server" OnSelectedIndexChanged="ListBoxPersons_SelectedIndexChanged" AutoPostBack="true"></asp:ListBox>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>