如何从ASP.Net中的Class获取Listbox.selected项

时间:2015-03-05 14:16:42

标签: c# asp.net

我已经完成了一个从我的" Person"中返回值的方法。类。我现在试图通过列表中的选定项从该类中获取特定值,然后能够使用该值。这是我的代码,我得到的错误是"无法将类型' System.Web.UI.WebControls.ListItem转换为"。这是我的代码:

       private Person aktuellPerson;

    protected void Page_Load(object sender, EventArgs e)
    {
        ListBoxPersoner.DataSource = Databasfunktioner.getPersoner();
        ListBoxPersoner.DataBind();
    }

    protected void ListBoxPersoner_SelectedIndexChanged(object sender, EventArgs e)
    {
      //Error below Cannot convert  type 'System.Web.UI.WebControls.ListItem to 'Testgrupp2.Person'
        aktuellPerson = (Person)ListBoxPersoner.SelectedItem;       
        TextBoxFornamn.Text = aktuellPerson.Fornamn;
    }

}

这是myclass

public class Person
{
    public int PersonId { get; set; }
    public string Personnummer { get; set; }
    public string Fornamn { get; set; }
    public string Efternamn { get; set; }

    public override string ToString()
    {
        return Personnummer + " " + Fornamn + " " + Efternamn;
    }

}

3 个答案:

答案 0 :(得分:0)

错误很明显 - SelectedItem返回一个ListItem,而不是Person。 您应该发布ListBoxPersoner类的代码,但我怀疑您在ListItem Text属性中有人名,而Value属性中有人ID。 如果您在ListItem中没有人名,则可以使用Value查找相应的Person。 再次这只是推测,因为我不知道ListBoxPersoner的实现。

答案 1 :(得分:0)

你不能这样转换。

您需要创建一个Person对象并分配给某个属性。

protected void ListBoxPersoner_SelectedIndexChanged(object sender, EventArgs e)
    {
       Person p = new Person();
       p.Fornamn = ListBoxPersoner.SelectedItem.ToString();       
        TextBoxFornamn.Text = p.Fornamn;
    }

答案 2 :(得分:0)

您还必须对绑定机制进行一些更改

 private Person aktuellPerson;

protected void Page_Load(object sender, EventArgs e)
{
    ListBoxPersoner.DataSource = Databasfunktioner.getPersoner();
    ListBoxPersoner.DataValueField="PersonID";
    ListBoxPersoner.DataTextField="Fornamn";
    ListBoxPersoner.DataBind();
}

    protected void ListBoxPersoner_SelectedIndexChanged(object sender, EventArgs )
   {
       var temItem= sender as DropDownList;  // if you are talking about DropDownList
        TextBoxFornamn.Text = temItem.SelectedItem.Text;
    }

}