- - PR -
Winアプリ DataGrid の DataGridBoolColumn について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-08-10 14:55
Jittaさん、ご返信ありがとうございます。
以下の用にやってみましたが期待した結果が得られませんでした。 もう少しだけ面倒を見てください。 Dim oleCn As New System.Data.OleDb.OleDbConnection Dim oleDa As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter Dim ds As DataSet = New DataSet Dim strSQL As String 'SQL格納用 Dim oleCm As OleDb.OleDbCommand strSQL = "" strSQL = strSQL & "SELECT ABC , " strSQL = strSQL & " BBB " ← Oracle Number型 1 or 0 strSQL = strSQL & " FROM Table " oleCm = New OleDb.OleDbCommand(strSQL, oleCn) oleDa.SelectCommand = oraCm oleDa.Fill(ds, "AAA") 'TableStyle(DataGridの体裁)を定義 Dim TblStyle As New DataGridTableStyle TblStyle.MappingName = "AAA" Dim txtAAA As New DataGridTextBoxColumn txtAAA.MappingName = "ABC" txtAAA.HeaderText = "ヘッダー" txtAAA.Width = 120 TblStyle.GridColumnStyles.Add(txtAAA) Dim chkFlg As New DataGridBoolColumn chkFlg.MappingName = "BBB" chkFlg.TrueValue = 1 ← 『1』でチェック chkFlg.FalseValue = 0 chkFlg.AllowNull = False chkFlg.HeaderText = "ヘッダーテキスト" chkFlg.Width = 50 TblStyle.GridColumnStyles.Add(chkFlg) 手間を掛けてすいません。出来の悪い奴でして・・・・。 | ||||
|
投稿日時: 2004-08-10 19:41
Jittaさん。
DataGridBoolColumn.SetColumnValueAtRow メソッドは、 object value が true なら TrueValue ・ false なら FalseValue DBNull なら NullValue その他なら null で DataGridColumnStyle.SetColumnValueAtRow メソッド に渡します。 書き忘れました。 override するんだったらこのあたりではないかと思いますが、 この仕様がどこまで波及しているのか調べるのは大変と思っています。 _________________ 〜〜〜〜〜〜〜〜 えムナウ http://www.geocities.jp/mnow mnow@yahoo.co.jp 〜〜〜〜〜〜〜〜 [ メッセージ編集済み 編集者: えムナウ 編集日時 2004-08-10 20:14 ] | ||||
|
投稿日時: 2004-08-10 20:51
う〜ん、日本語で書いてあることからは、設定にも取得にも、TrueValue/FalseValueに設定した値が使えそうなのですが。。。と、Object?intはObjectから派生していないから?System.Int32ならイケる?
| ||||
|
投稿日時: 2004-08-10 22:45
出来ちゃいましたね。
_________________ 〜〜〜〜〜〜〜〜 えムナウ http://www.geocities.jp/mnow mnow@yahoo.co.jp 〜〜〜〜〜〜〜〜 [ メッセージ編集済み 編集者: えムナウ 編集日時 2004-08-10 23:02 ] | ||||
|
投稿日時: 2004-08-10 22:54
CurrencyManager がちょっと変なので削除してみましたが動作しました。
_________________ えムナウ Microsoft MVP for Visual Developer - C#,2005/01-2007/12 えムナウのプログラミングのページ Blog1 Blog2 | ||||
|
投稿日時: 2004-08-10 22:57
dataGrid1.TableStyles.Add が無かったという落ちですか?
_________________ えムナウ Microsoft MVP for Visual Developer - C#,2005/01-2007/12 えムナウのプログラミングのページ Blog1 Blog2 | ||||
|
投稿日時: 2004-08-11 08:31
おはようございます。
>dataGrid1.TableStyles.Add が無かったという落ち ではないです。DataGridTextBoxColumn の部分は上手くいってます。 前の投稿でその部分がなかったみたいですね。すいません。 Dim oleCn As New System.Data.OleDb.OleDbConnection Dim oleDa As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter Dim ds As DataSet = New DataSet Dim strSQL As String 'SQL格納用 Dim oleCm As OleDb.OleDbCommand strSQL = "" strSQL = strSQL & "SELECT ABC , " strSQL = strSQL & " BBB " ← Oracle Number型 1 or 0 strSQL = strSQL & " FROM Table " oleCm = New OleDb.OleDbCommand(strSQL, oleCn) oleDa.SelectCommand = oraCm oleDa.Fill(ds, "AAA") 'TableStyle(DataGridの体裁)を定義 Dim TblStyle As New DataGridTableStyle TblStyle.MappingName = "AAA" Dim txtAAA As New DataGridTextBoxColumn txtAAA.MappingName = "ABC" txtAAA.HeaderText = "ヘッダー" txtAAA.Width = 120 TblStyle.GridColumnStyles.Add(txtAAA) Dim chkFlg As New DataGridBoolColumn chkFlg.MappingName = "BBB" chkFlg.TrueValue = 1 ← 『1』でチェック chkFlg.FalseValue = 0 chkFlg.AllowNull = False chkFlg.HeaderText = "ヘッダーテキスト" chkFlg.Width = 50 TblStyle.GridColumnStyles.Add(chkFlg) '定義したTableStyleをDataGridに適用 datagrid.TableStyles.Clear() datagrid.TableStyles.Add(TblStyle) datagrid.DataSource = ds.Tables("AAA") 今回参照した.NET TIPSで列を定義している部分 // テーブルの列を作成 DataSet dataSet1 = new DataSet("商品マスター"); DataTable dataTable1 = dataSet1.Tables.Add("商品テーブル"); DataColumn dataClumn1 = dataTable1.Columns.Add("ID", typeof(int)); DataColumn dataClumn2 = dataTable1.Columns.Add("商品"); DataColumn dataClumn3 = dataTable1.Columns.Add("チェック", typeof(bool)); の記述を僕がしていないからでしょうか?別で参照した雑誌で上記の流れでやってあったのでそちらを参照して、チェックボックスの部分をこちらの.NET TIPSを参照しました。 | ||||
|
投稿日時: 2004-08-11 11:00
>DataColumn dataClumn3 = dataTable1.Columns.Add("チェック", typeof(bool));
bool なら bool でいいじゃん。 int だから苦労しているんじゃなかったのですか? しかも DataSet と SQL が 対応していないのはなぜですか? DataSet の項目名と SQL項目名が違うし、個数もちがう、テーブル名も違う。 これはTipsそのままでカスタマイズしていないということですかね。 こんなのが本来いるんですかという質問と捕らえるとあったほうがいいです。 >strSQL = "" >strSQL = strSQL & "SELECT ABC , " >strSQL = strSQL & " BBB " ← Oracle Number型 1 or 0 >strSQL = strSQL & " FROM Table " >oleCm = New OleDb.OleDbCommand(strSQL, oleCn) >oleDa.SelectCommand = oraCm >oleDa.Fill(ds, "AAA") これで自動的に ds に AAA テーブルが作成されますが、ABC・BBB のTypeは未指定ですので暗黙値(実行時の暗黙生成)となります。 未確認ですが両方 string にされているかもしれません。 DataSet の中身は Fill の後で予定どおり string int の順で入っていることを確認されましたか? >datagrid.DataSource = ds.Tables("AAA") dataGrid1.DataSource = custDS; dataGrid1.DataMember = "Orders"; 問題は無いとは思いますが一応あげておきます。 あと順序もあわせたほうがいいと思います。 dataGrid1.TableStyles.Add(new DataGridTableStyle()); dataGrid1.TableStyles[0].MappingName = "Orders"; のあたりですね。 私が出来たのですから、とっとさんもきっと出来ます。 _________________ えムナウ Microsoft MVP for Visual Developer - C#,2005/01-2007/12 えムナウのプログラミングのページ Blog1 Blog2 |