0

有两个班

1 类 A[属性:-aid,aname]

2 类 B[属性:-bid,A,bname]

DropDownList ddlist;

ICriteria criteria = ActiveRecordMediator<B>.GetSessionFactoryHolder()
                     .CreateSession(typeof(B)).CreateCriteria(typeof(B))
                     .setFetchMode(“A”,FetchMode.JOIN);

ddlistToLet.DataSource = criteria.List();

ddlistToLet.DataTextField = "bname";

ddlistToLet.DataValueField = "援助";

ddlistToLet.DataBind();

我收到这个错误

DataBinding:“B”不包含名为“aid”的属性。

如何解决这个问题?

4

3 回答 3

0

提供具有该值的属性。

class B
{
  public A A { get; set;}
  public aid { get { return A.aid; } }
}

如果你不喜欢它,因为你不想改变你的类,那么你可以使用一个特殊的类来绑定到控件。

于 2009-04-23T09:50:50.520 回答
0

将查询结果转换为更“绑定友好”的对象:

public class MyDTO {
  public string BeeName { get; set; }
  public string AId { get; set; }
}

// .. (snip) ..

ICriteria criteria = ActiveRecordMediator<B>.GetSessionFactoryHolder()
  .CreateSession(typeof(B)).CreateCriteria(typeof(B))
  .CreateCriteria(“A”)
  .SetProjection(Projections.ProjectionList()
    .Add(Projections.Property("bname", "BeeName"))
    .Add(Projections.Property("aid", "AId"))
  )
  .SetResultTransformer(Transformers.AliasToBean(typeof(MyDTO)));

IList<MyDTO> results = criteria.List<MyDTO>();
于 2010-03-17T19:37:45.010 回答
0

当使用条件时,NHibernate 将返回一个二维结果数组。我认为下拉菜单无法了解底层对象结构是什么。查看结果,您应该能够调整绑定。

于 2009-04-23T01:04:17.977 回答