0

2つのクラスがあります

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 は結果の 2 次元配列を返します。ドロップダウンでは、基になるオブジェクト構造が何であるかを理解できないと考えています。結果を見て、バインディングを調整できるはずです。

于 2009-04-23T01:04:17.977 に答える