在列表框 C# 中找不到所选项目 ASP.NET

Can't find selected item in listbox C# ASP.NET

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    //int test = Convert.ToInt32(ListBox1.SelectedValue.ToString());            
    //GetById(test);
    foreach (ListItem listitem in ListBox1.Items)
    {
        if (listitem.Selected == true)
        {
            string email = listitem.Text;
            GetByEmail(email);
        }
    }
}

应该选择此方法item.I不知道为什么,但它告诉我 属性 selected 对于所有项目都是错误的。

protected void Page_Load(object sender, EventArgs e)
{ 
    ListBox1.Items.Clear();
    SelectAllUsers();
}

public void SelectAllUsers()
{
    SchoolService.SchoolServiceClient client = new SchoolService.SchoolServiceClient();
    SchoolService.User[] userArray = client.SelectAll(0);

    int i = 0;

    while (i < userArray.Length)
    {                                
        ListItem listItem = new ListItem();
        listItem.Text = userArray[i].Email;
        listItem.Value = userArray[i].Id.ToString();                                      
        ListBox1.Items.Add(listItem);                
        i++;
    }            
}

public void GetByEmail(string email)
{
    SchoolService.SchoolServiceClient client = new SchoolService.SchoolServiceClient();
    SchoolClient.SchoolService.User user = client.GetUserByEmail(email);

    if ((user.FirstName != null) || (user.LastName != null) || (user.Address != null) ||
        (user.City != null) || (user.Email != null) || (user.Password != null))
    {
        txtId.Text = user.Id.ToString();
        txtFirstName.Text = user.FirstName.ToString();
        txtLastName.Text = user.LastName.ToString();
        txtAddress.Text = user.Address.ToString();
        txtCity.Text = user.City.ToString();
        txtDateOfBirth.Text = user.DateOfBirth.ToShortDateString();
        txtEmail.Text = user.Email.ToString();
        txtPassword.Text = user.Password.ToString();
        txtIsAdmin.Text = user.isAdmin.ToString();
    }
    else
    {
        MsgBox("None user was found", this.Page, this);
    }
}
public void SelectAllUsers()
{
    SchoolService.SchoolServiceClient client = new SchoolService.SchoolServiceClient();
    SchoolService.User[] userArray = client.SelectAll(0);

    int i = 0;

    while (i < userArray.Length)
    {
        //if (userArray[i] != null)
        //{
            ListItem listItem = new ListItem();
            listItem.Text = userArray[i].Email;
            listItem.Value = userArray[i].Id.ToString();                                      
            ListBox1.Items.Add(listItem);
        //}
        i++;
    }            
}

还发送了用项目填充列表框的方法 (SelectAllUsers),以及应该从数据库中获取所选项目的方法 (GetByEmail)

它没有找到任何选择,因为在 Page_Load 上你每次都重新绑定数据。您需要检查是否 IsPostBack

protected void Page_Load(object sender, EventArgs e)
{ 
    if(!IsPostBack) 
    {
      ListBox1.Items.Clear();
      SelectAllUsers();
    }
}