- PR -

DataGridに値を設定する方法

1
投稿者投稿内容
ton
常連さん
会議室デビュー日: 2004/01/20
投稿数: 29
投稿日時: 2004-03-24 14:06
DataGridにデータを表示させたいのですが、
セルごとに値を設定していくことは可能でしょうか?
今までは、SQL文でデータを検索してDataSetを作成し、
DataGrid1.DataBind()で、DataGridに結果を表示していました。
今回は、検索結果を一気にBindではなく、このデータは何行目の何列目に・・・
のようにひとつづつ設定を行って表示させたいのです。
というのは、ヘッダには1〜31までの日付を並べておいて
検索データの日付と比較し、該当の日付のセルに値をセット・・という処理を
行いたいからです。
個々のセルにアクセスする方法としてDataGrid1.Items(i).Cells(j).Text = ""
を使用する方法は見つけたのですが、これはDataGridにデータが連結された後に
有効なので、連結する前から使用することはできません。

どなたかいい方法があればご教授願います。
ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-03-24 15:10
この場合、わたしはDataGridで操作するのではなく表示用のDataSetを作成して
読み込んできたデータを表示用のDataSetに格納してそれをDataGridにバインド
しています。
ton
常連さん
会議室デビュー日: 2004/01/20
投稿数: 29
投稿日時: 2004-03-24 15:31
ゆうじゅんさん、ありがとうございます。

>表示用のDataSetを作成して 読み込んできたデータを表示用のDataSetに格納

とありますが、表示用のDataSetの作成というのがよくわかりません。
検索対象のテーブルには1〜31の日付を直接あらわす項目(列名?)はないのです。
日付項目(YYYYMMDD形式で格納)からDDの部分をみて該当日付に設定したいのです。
何か的外れなことを言っていたらすいません。

とりあえずDataSetについてもう一度調べてみようと思います・・・
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-03-24 15:43
データを取ってから加工するのではなく、SQLのSELECT文を1〜31の列を表示するように書いたらどうでしょう。

ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-03-24 16:07
データセットはDBにあるテーブルがなくても作成できます。

メニューの「プロジェクト」→「新しい項目の追加」→「データセット」

あとは1〜31の項目を持つテーブルを新規作成して下さい。

あとはデータセットではなくデータテーブルをプログラム内部で作成するとか
(こっちのほうが楽かもしれません)
コード:
private ICollection CreateDataSource() 
{
	// 表示用テーブルを作成
	DataTable table = new DataTable();

	// キー項目を追加
	DataColumn col = new DataColumn( "Key", GetType("System.String") );
	table.Columns.Add( col );

	// col1〜col31の項目を作成
	for( i=0; i<31; i++ )
	{
		string colName = string.Format( "Col{0}", i+1 );
		DataColumn col = new DataColumn( colName, GetType("System.Int32") );
		table.Columns.Add( col );
	}

	// データベースから読み込んだデータを設定
	

	// 作成したテーブルを返す
	return table;
}

private void Page_Load(object sender, System.EventArgs e)
{
	// 一覧に表示するデータソースを作成
	DataGrid1.DataSource = CreateDataSource();

	// データグリッドにデータをバインド
	DataGrid1.DataBind();
}


ton
常連さん
会議室デビュー日: 2004/01/20
投稿数: 29
投稿日時: 2004-03-24 16:26
一郎さん、ゆうじゅんさん、ありがとうございます。

>データセットはDBにあるテーブルがなくても作成できます。

そんな方法があるんですね!
調べながらさっそくやってみようと思います。
また質問するかもしれませんので、その時はよろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)