- - PR -
DataGridに表示させる、セルの移動
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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; } |
|
投稿日時: 2006-01-17 11:31
dataGrid1.DataSourceにAdd見たいのってないでしたっけ?
一度ArrayListに入れれば良いんじゃないですか? |
|
投稿日時: 2006-01-17 12:21
最初の時点で空レコードを生成したものをバインドする、という手もありますね。
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
|
投稿日時: 2006-01-17 13:39
自分なら恐らくSQL文でSELECT時になんとかしちゃいますね。
上記の例でなんとかしたいなら、 ・16〜31日のdataviewを作成 ・1レコードずつループして日付が抜けていればdataviewにレコードをadd ・ループを抜けた後datagridにdataviewをセット みたいな感じですかね。 上記だとループしている意味がなくなってますね。 |
|
投稿日時: 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; } |
|
投稿日時: 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; |
|
投稿日時: 2006-01-17 15:28
>>ぶらんどん さん
指摘の場所を修正してみましたが、繰り返し数表示されましたがRowFilter、Table、AllowEditなどが表示されるだけで、値が表示できません。 どんな方法でもいいので、表示のさせ方を詳しく教えてください。この問題で、1週間ぐらい悩んでいます。本当にお願いします。 [ メッセージ編集済み 編集者: C#初心者 編集日時 2006-01-18 00:29 ] |
|
投稿日時: 2006-01-18 16:49
質問なんですが、なんでいったんTABLE全部とるんですか?
まぁ事情があるかもしれませんが・・・ HTMLソースのDataGridのところ見せてもらっていいですか? |