- PR -

DataGridに表示させる、セルの移動

投稿者投稿内容
C#初心者
常連さん
会議室デビュー日: 2005/12/22
投稿数: 24
投稿日時: 2006-01-17 11:01
抽出したい、社員名を選択し、指定月の16〜31のレコードをDataGridに表示させようと考えています。
レコードには、休みの日の内容は登録されておらず、16 17 19という表示になりますので、18日に任意のレコードを追加し、見栄えをよくしようと思っています。
そこで問題なのですが、この処理では1つ目のセルにしか代入されず、結果を見ると、31日のデータしか表示されていません。次のセルへ表示させ方を教えてください。

// 該当した社員Noと、日付を元にレコードを抽出
for(int i=16;i<=31;i++)
{
// 日付の作成 2005+11+16=20051116
string a=comboBox2.Text + comboBox3.Text + i.ToString();
// 表示内容の抽出
dataView1 = new DataView(dataSet11.Tables["実績M"]
,"社員No = '100' and 日付 = '" + a + "' " ,"", DataViewRowState.CurrentRows);

// レコードが見つからなかったとき
if(dataView1.Count==0)
{
// 値を代入処理
}
  // 表示
dataGrid1.DataSource = dataView1;
}
ぶらんどん
常連さん
会議室デビュー日: 2005/11/18
投稿数: 32
投稿日時: 2006-01-17 11:31
dataGrid1.DataSourceにAdd見たいのってないでしたっけ?
一度ArrayListに入れれば良いんじゃないですか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-17 12:21
最初の時点で空レコードを生成したものをバインドする、という手もありますね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
び〜る
会議室デビュー日: 2005/11/29
投稿数: 12
投稿日時: 2006-01-17 13:39
自分なら恐らくSQL文でSELECT時になんとかしちゃいますね。

上記の例でなんとかしたいなら、
・16〜31日のdataviewを作成
・1レコードずつループして日付が抜けていればdataviewにレコードをadd
・ループを抜けた後datagridにdataviewをセット

みたいな感じですかね。
上記だとループしている意味がなくなってますね。
C#初心者
常連さん
会議室デビュー日: 2005/12/22
投稿数: 24
投稿日時: 2006-01-17 13:41
ArrayListは、利用したことがなかったんですが試してみました。下記の通りやってみたんですが、表示がRowFilter、Table、AllowEditなど関係のないものが表示されてしまいました。やはり利用方法が間違っているのでしょうか?

ArrayList list = new ArrayList();
// 該当した社員Noと、日付を元にレコードを抽出
for(int i=16;i<=31;i++)
{
// 日付の作成 2005+11+16=20051116
string a=comboBox2.Text + comboBox3.Text + i.ToString();
// 表示内容の抽出
dataView1 = new DataView(dataSet11.Tables["実績M"]
,"社員No = '100' and 日付 = '" + a + "' " ,"", DataViewRowState.CurrentRows);

list.Add(dataView1);

// レコードが見つからなかったとき
if(dataView1.Count==0)
{
// 値を代入処理
}
  // 表示
dataGrid1.DataSource = list;
}
ぶらんどん
常連さん
会議室デビュー日: 2005/11/18
投稿数: 32
投稿日時: 2006-01-17 14:30
>ArrayList list = new ArrayList();
>// 該当した社員Noと、日付を元にレコードを抽出
>for(int i=16;i<=31;i++)
>{
>// 日付の作成 2005+11+16=20051116
>string a=comboBox2.Text + comboBox3.Text + i.ToString();
>// 表示内容の抽出
>dataView1 = new DataView(dataSet11.Tables["実績M"]
>,"社員No = '100' and 日付 = '" + a + "' " ,"", DataViewRowState.CurrentRows);

>list.Add(dataView1);

>// レコードが見つからなかったとき
>if(dataView1.Count==0)
>{
>// 値を代入処理
>}
>  // 表示
>dataGrid1.DataSource = list;
>}

ではなく
ArrayList list = new ArrayList();
// 該当した社員Noと、日付を元にレコードを抽出
for(int i=16;i<=31;i++)
{
// 日付の作成 2005+11+16=20051116
string a=comboBox2.Text + comboBox3.Text + i.ToString();
// 表示内容の抽出
dataView1 = new DataView(dataSet11.Tables["実績M"]
,"社員No = '100' and 日付 = '" + a + "' " ,"", DataViewRowState.CurrentRows);

list.Add(dataView1);

// レコードが見つからなかったとき
if(dataView1.Count==0)
{
// 値を代入処理
}
}
// 表示
dataGrid1.DataSource = list;
C#初心者
常連さん
会議室デビュー日: 2005/12/22
投稿数: 24
投稿日時: 2006-01-17 15:28
>>ぶらんどん さん
指摘の場所を修正してみましたが、繰り返し数表示されましたがRowFilter、Table、AllowEditなどが表示されるだけで、値が表示できません。

どんな方法でもいいので、表示のさせ方を詳しく教えてください。この問題で、1週間ぐらい悩んでいます。本当にお願いします。


[ メッセージ編集済み 編集者: C#初心者 編集日時 2006-01-18 00:29 ]
ぶらんどん
常連さん
会議室デビュー日: 2005/11/18
投稿数: 32
投稿日時: 2006-01-18 16:49
質問なんですが、なんでいったんTABLE全部とるんですか?
まぁ事情があるかもしれませんが・・・

HTMLソースのDataGridのところ見せてもらっていいですか?

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