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

时间:2015-04-20 22:54:59

标签: c# asp.net listbox

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);
        }
    }
}

此方法应该是选中的项目。我不知道为什么,但它告诉我所有项目的属性selected都是false。

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)填充listBox的方法,以及应从数据库中获取所选项目的方法(GetByEmail)

1 个答案:

答案 0 :(得分:5)

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

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