我已经完成了一个从我的" 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;
}
}
答案 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;
}
}