0

私は次のオブジェクトを持っています:

CrossTabDataObject
{
   string RowName{get;set;};
   int RowId{get;set;}
   List<string> CellContents = new List <string>();
   //Constructor..... etc.

}

asp.net3.5のGridViewを使用して動的クロス集計グリッドを構築しています

動的列1のCellContents[0]にバインドしたい(動的列0はCrossTabDataObjectのRowNameフィールドです)など。使用しているもの:

object boundValueObj = null;
Control ctrl = (Control)sender;
IDataItemContainer dataItemContainer = (IDataItemContainer)ctrl.NamingContainer;
boundValueObj = DataBinder.Eval(dataItemContainer.DataItem, strSelectedID);

このコードは、クロス集計の各セルにドロップダウンリストテンプレートを作成しているため、グリッドビューのInstantiateIn関数にあります。

作成する列に応じてstrSelectedIDを設定するコード(図には示されていません)があります。

strSelectedIDが動的列[0]の「RowName」と等しい場合、DataBinder.Eval関数は正常に機能し、boundValueObjを期待どおりに設定します。この問題は、strSelectedIDが "CellContents [n]"に設定されている場合に発生します。ここで、nは列インデックスです。

DataBinder.Evalは、オブジェクトのプロパティとフィールドでのみ機能します。これを回避するにはどうすればよいですか?

ありがとう、

リッチ。

4

1 に答える 1

0

OK-私による愚かな間違い!

変化:

CrossTabDataObject
{
   string RowName{get;set;};
   int RowId{get;set;}
   List<string> CellContents = new List <string>();
   //Constructor..... etc.

}

に:

CrossTabDataObject
{
   string RowName{get;set;};
   int RowId{get;set;}
   List<string> CellContents{get;set;}
   //Constructor
   public CrossTabDataObject()
   {
     CellContents = new List<string>();
   }

}

すべての違いを生んだ。つまり、CellContentsをクラスのプロパティにしました。

リッチ。

于 2010-09-05T13:11:47.903 に答える