My DataTableがプログラムによって生成され、セルにJobInstance型のオブジェクトが含まれています。複雑なデータオブジェクトを持つDataTableをGridViewにバインドするにはどうすればよいですか?
DataTable dataTable = new DataTable();
// first column - label
dataTable.Columns.Add("JobType", typeof(string));
// other columns (data-driven)
foreach(string config in Configurations)
{
DataColumn col = new DataColumn(config, typeof(JobInstance)); // !!!
dataTable.Columns.Add(col);
}
// rows
foreach(string jobType in JobTypes)
{
DataRow row = dataTable.NewRow();
row["JobType"] = jobType;
foreach(string config in Configurations)
{
row[config] = GetJobInstance(jobType, config); // returns a JobInstance object
}
dataTable.Rows.Add(row);
}
私はASPのGridViewには、このデータテーブルをバインドすると、それだけで最初の列を表示します。しかし、列を作成するときに "typeof(Job)"を削除すると、GridViewはセル内のJobInstance.ToString()の結果を表示してすべての列を表示します。しかし、私は基礎となるJobInstanceオブジェクトにアクセスすることはできず、表示されている文字列値だけがあります。
各セルのJobInstance内のフィールドにアクセスして書式設定オプションを決定し、各セルに他のリンクを追加する必要があるため、GridView(たとえばOnRowDataBound)を表示するときにJobInstanceオブジェクトにアクセスする必要があります。
これは可能ですか?
ありがとうございました。
私はJobInstanceのフィールドを列として表示したくありませんでした。私の列は独立して定義され、各セルはJobInstanceです。しかし、最終的には、行/列を直接与えたデータ構造体のオブジェクトにアクセスしてオブジェクトにアクセスする方法と似たようなことをしました。実際にオブジェクトをグリッドビューに実際にバインドする方法がないように思えました。 – ewerx