- - PR -
Calendarコントロールについて。
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-26 16:14
たびたびすみません。
教えていただいたコードに変更してみましたが描画処理だけうまくいきません。 現在のコードは下記のようになっていてエラーも出ませんが日付をクリックしても何も表示されない状態です。 Imports System.Data Imports System.Data.OleDb Imports System.Drawing Public Class WebForm1 Inherits System.Web.UI.Page #Region " Web フォーム デザイナで生成されたコード " 'この呼び出しは Web フォーム デザイナで必要です。 <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub Protected WithEvents DisplayTable As System.Web.UI.WebControls.Table Protected WithEvents Cal As System.Web.UI.WebControls.Calendar 'メモ : 次のプレースホルダ宣言は Web フォーム デザイナで必要です。 '削除および移動しないでください。 Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init ' CODEGEN: このメソッド呼び出しは Web フォーム デザイナで必要です。 ' コード エディタを使って変更しないでください。 InitializeComponent() End Sub #End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub Calendar1_SelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim cal As Calendar = CType(sender, Calendar) DispDetail(cal.SelectedDate) End Sub Private Sub DispDetail(ByVal SelectedDate As Date) Dim connectString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\Stage7\WebDB\スケジュール.mdb" Dim cn As OleDbConnection = New OleDbConnection(connectString) cn.Open() Dim selectString As String = "SELECT ナンバー, タイトル, 日付, 開始, 終了, メモ FROM スケジュールデータ" Dim cmd As OleDbCommand = New OleDbCommand(selectString, cn) Dim reader As OleDbDataReader = cmd.ExecuteReader() DisplayTable.Width = Unit.Percentage(90.0) Dim tableHeading As TableRow = New TableRow Dim customerナンバーHeading As TableHeaderCell = New TableHeaderCell customerナンバーHeading.Text = "ナンバー" customerナンバーHeading.HorizontalAlign = HorizontalAlign.Left tableHeading.Cells.Add(customerナンバーHeading) Dim customerタイトルHeading As TableHeaderCell = New TableHeaderCell customerタイトルHeading.Text = "タイトル" customerタイトルHeading.HorizontalAlign = HorizontalAlign.Left tableHeading.Cells.Add(customerタイトルHeading) Dim customer日付Heading As TableHeaderCell = New TableHeaderCell customer日付Heading.Text = "日付" customer日付Heading.HorizontalAlign = HorizontalAlign.Left tableHeading.Cells.Add(customer日付Heading) Dim customer開始Heading As TableHeaderCell = New TableHeaderCell customer開始Heading.Text = "開始" customer開始Heading.HorizontalAlign = HorizontalAlign.Left tableHeading.Cells.Add(customer開始Heading) Dim customer終了Heading As TableHeaderCell = New TableHeaderCell customer終了Heading.Text = "終了" customer終了Heading.HorizontalAlign = HorizontalAlign.Left tableHeading.Cells.Add(customer終了Heading) Dim contactメモHeading As TableHeaderCell = New TableHeaderCell contactメモHeading.Text = "メモ" contactメモHeading.HorizontalAlign = HorizontalAlign.Left tableHeading.Cells.Add(contactメモHeading) While (reader.Read()) Dim detailsRow As TableRow = New TableRow Dim customerナンバーCell As TableCell = New TableCell customerナンバーCell.Text = reader("ナンバー").ToString() detailsRow.Cells.Add(customerナンバーCell) Dim customerタイトルCell As TableCell = New TableCell customerタイトルCell.Text = reader("タイトル").ToString() detailsRow.Cells.Add(customerタイトルCell) Dim customer日付Cell As TableCell = New TableCell customer日付Cell.Text = reader("日付").ToString() detailsRow.Cells.Add(customer日付Cell) Dim customer開始Cell As TableCell = New TableCell customer開始Cell.Text = reader("開始").ToString() detailsRow.Cells.Add(customer開始Cell) Dim contact終了Cell As TableCell = New TableCell contact終了Cell.Text = reader("終了").ToString() detailsRow.Cells.Add(contact終了Cell) Dim customerメモCell As TableCell = New TableCell customerメモCell.Text = reader("メモ").ToString() detailsRow.Cells.Add(customerメモCell) DisplayTable.Rows.Add(detailsRow) End While reader.Close() cn.Close() ' 画面の描画処理 End Sub End Class このような感じになりましたが画面の描画処理の部分だけうまくできていないので表示されません。 申し訳ありませんが描画処理の方法をアドバイスいただけないでしょうか? | ||||||||
|
投稿日時: 2006-01-26 16:20
たびたびすみません。
教えていただいたコードに変更してみましたが描画処理だけうまくいきません。 現在のコードは下記のようになっていてエラーも出ませんが日付をクリックしても何も表示されない状態です。 Imports System.Data Imports System.Data.OleDb Imports System.Drawing Public Class WebForm1 Inherits System.Web.UI.Page #Region " Web フォーム デザイナで生成されたコード " 'この呼び出しは Web フォーム デザイナで必要です。 <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() End Sub Protected WithEvents DisplayTable As System.Web.UI.WebControls.Table Protected WithEvents Cal As System.Web.UI.WebControls.Calendar 'メモ : 次のプレースホルダ宣言は Web フォーム デザイナで必要です。 '削除および移動しないでください。 Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init ' CODEGEN: このメソッド呼び出しは Web フォーム デザイナで必要です。 ' コード エディタを使って変更しないでください。 InitializeComponent() End Sub #End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub Calendar1_SelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim cal As Calendar = CType(sender, Calendar) DispDetail(cal.SelectedDate) End Sub Private Sub DispDetail(ByVal SelectedDate As Date) Dim connectString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\Stage7\WebDB\スケジュール.mdb" Dim cn As OleDbConnection = New OleDbConnection(connectString) cn.Open() Dim selectString As String = "SELECT ナンバー, タイトル, 日付, 開始, 終了, メモ FROM スケジュールデータ" Dim cmd As OleDbCommand = New OleDbCommand(selectString, cn) Dim reader As OleDbDataReader = cmd.ExecuteReader() DisplayTable.Width = Unit.Percentage(90.0) Dim tableHeading As TableRow = New TableRow Dim customerナンバーHeading As TableHeaderCell = New TableHeaderCell customerナンバーHeading.Text = "ナンバー" customerナンバーHeading.HorizontalAlign = HorizontalAlign.Left tableHeading.Cells.Add(customerナンバーHeading) Dim customerタイトルHeading As TableHeaderCell = New TableHeaderCell customerタイトルHeading.Text = "タイトル" customerタイトルHeading.HorizontalAlign = HorizontalAlign.Left tableHeading.Cells.Add(customerタイトルHeading) Dim customer日付Heading As TableHeaderCell = New TableHeaderCell customer日付Heading.Text = "日付" customer日付Heading.HorizontalAlign = HorizontalAlign.Left tableHeading.Cells.Add(customer日付Heading) Dim customer開始Heading As TableHeaderCell = New TableHeaderCell customer開始Heading.Text = "開始" customer開始Heading.HorizontalAlign = HorizontalAlign.Left tableHeading.Cells.Add(customer開始Heading) Dim customer終了Heading As TableHeaderCell = New TableHeaderCell customer終了Heading.Text = "終了" customer終了Heading.HorizontalAlign = HorizontalAlign.Left tableHeading.Cells.Add(customer終了Heading) Dim contactメモHeading As TableHeaderCell = New TableHeaderCell contactメモHeading.Text = "メモ" contactメモHeading.HorizontalAlign = HorizontalAlign.Left tableHeading.Cells.Add(contactメモHeading) While (reader.Read()) Dim detailsRow As TableRow = New TableRow Dim customerナンバーCell As TableCell = New TableCell customerナンバーCell.Text = reader("ナンバー").ToString() detailsRow.Cells.Add(customerナンバーCell) Dim customerタイトルCell As TableCell = New TableCell customerタイトルCell.Text = reader("タイトル").ToString() detailsRow.Cells.Add(customerタイトルCell) Dim customer日付Cell As TableCell = New TableCell customer日付Cell.Text = reader("日付").ToString() detailsRow.Cells.Add(customer日付Cell) Dim customer開始Cell As TableCell = New TableCell customer開始Cell.Text = reader("開始").ToString() detailsRow.Cells.Add(customer開始Cell) Dim contact終了Cell As TableCell = New TableCell contact終了Cell.Text = reader("終了").ToString() detailsRow.Cells.Add(contact終了Cell) Dim customerメモCell As TableCell = New TableCell customerメモCell.Text = reader("メモ").ToString() detailsRow.Cells.Add(customerメモCell) DisplayTable.Rows.Add(detailsRow) End While reader.Close() cn.Close() ' 画面の描画処理 End Sub End Class このような感じになりましたが画面の描画処理の部分だけうまくできていないので表示されません。 申し訳ありませんが描画処理の方法をアドバイスいただけないでしょうか? | ||||||||
|
投稿日時: 2006-01-26 18:44
イベントが発生してないようですね SelectionChanged のハンドラが設定されていません
#ソースは BBコードを使って [CODE][ /CODE]でくくってください #全部乗せなくてもいいですよ 見るのも大変です | ||||||||
|
投稿日時: 2006-01-26 22:08
教えていただいた通り下記のようにコードを書き換え実行してみましたら初期状態では何もスケジュールが表示されなくなりましたがカレンダーの何日の日付をクリックしても全てのスケジュールが出てきてしまうようになりました。
具体例:データベースの日付が2006/01/12・2006/01/13・2006/01/15の3件分入っていたとしてもカレンダーの全く関係ない2006/01/25日をクリックしても上記の3件のスケジュールが表示されてしまいます。また同様に2006/01/12をクリックしても全てのスケジュールが表示されてしまいます。 これはデータベース検索処理の所が悪いのだと思うのですがどこが悪いのでしょうか? 毎回申し訳ありませんがアドバイスお願いいたします。
#[code][ /code]でくくってみましたが全コードを乗せてから変更したのがこの部分だけなのでこの部分だけでよいでしょうか? [ メッセージ編集済み 編集者: Da-ku 編集日時 2006-01-26 22:09 ] | ||||||||
|
投稿日時: 2006-01-26 22:35
前回提示していただいたソース上では使用していなかったようですが
DispDetail() に cal.SelectedDate を渡しているのはどうしてだと思いますか? | ||||||||
|
投稿日時: 2006-01-26 22:52
>DispDetail() に cal.SelectedDate を渡しているのはどうしてだと思いますか?
DispDatail()に必要なスケジュールデータ選択して読み込んできて表示すると言うことでしょうか? データベースの検索処理が間違っていることは分かるのですがどこをどう修正して良いのか分かりません。毎回申し訳ありませんがアドバイスいただけないでしょうか?よろしくお願いいたします。 | ||||||||
|
投稿日時: 2006-01-27 11:11
Webで検索してみましたか???????
条件を元にデータベースを検索すればいいんですよね とりあえずはこんな感じで
これが出来たら検索する値を OleDbParameter で置き換える用に 調べてください [ メッセージ編集済み 編集者: かるあ 編集日時 2006-01-27 11:26 ] | ||||||||
|
投稿日時: 2006-01-27 22:20
返信が遅くなり申し訳ありません。
教えていただいたSELECT文を元に色々と調べてやっていくうちにDataGridを使ってやる方法を見つけ正常に動作することが出来ました。
この度は色々とお手間をかけて申し訳ありませんでした。 |