databinder.evalを使用して、リストにバインディング<文字列>を使用します

StackOverflow https://stackoverflow.com/questions/3637687

  •  30-09-2019
  •  | 
  •  

質問

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

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

}

ASP.NET 3.5のGridViewを使用して、動的なCrosstabグリッドを構築しています

動的列1の場合、cellcontents [0]、動的列2(動的列0はcrosstabdataobjectのrownameフィールド)などのcellcontents [1]に結合したいと思います。私は以下を使用しています。

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

このコードは、CrosStabの各セルでドロップダウンリストテンプレートを作成しているため、GridViewのインスタンスインチーチ関数にあります。

作成されている列に応じてStrecedIDを設定するコード(表示なし)があります。

StrselededIDが動的列[0]の「rowname」に等しい場合、データベインダー。Val関数は正常に動作し、予想どおりにBoundValueOBJを設定します。問題は、StrselededIDが「CellContents [n]」に設定されている場合に発生します。ここで、nは列インデックスです。

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

ありがとう、

リッチ。

役に立ちましたか?

解決

わかりました - 私による愚かな間違い!

変化:

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をクラスの特性にしました。

リッチ。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top