- PR -

【Win】グリッドにボタン列を作りたい

1
投稿者投稿内容
PoH
常連さん
会議室デビュー日: 2003/09/09
投稿数: 48
投稿日時: 2005-09-08 17:25
環境
・Windowsフォーム
・C#
・VS.NET

DataGridにカスタムのボタン列を追加し、
ボタンをクリックにて検索画面を表示、
指定列に検索画面にて選択した値を返す。
というような処理を行いたいと思っています。

現在はグリッドの外にひとつボタンを設けて
クリックすると検索画面が表示され
取得した値はフォーカスが当たっている行の
指定列に返すというようにやっていたのですが、
新規の行で行うと
ボタンにフォーカスが行った時点で
グリッドの選択行が新規行から最終行に移ってしまい
新規行の指定列に値が返せなくなってしまいます。

では、グリッドの中にボタン列を追加して
行ごとにクリックできるようにしようと考えたのですが
コンボボックス列をカスタムする方法は見当たったんですが
ボタン列をカスタムする方法が見当たりませんでした。

どなたかこの処理のうまい解決法
またはカスタムボタン列の作成方法をご存知でしたら
ご教授いただけませんでしょうか。
とっと
大ベテラン
会議室デビュー日: 2004/03/25
投稿数: 197
投稿日時: 2005-09-08 18:51
こんにちは。

要はデータグリッドの元になるDataTableのDataRowのインデックスが
きちんと取得されていれば問題ないのではないでしょうか?

Dim dtTable As DataTable
Dim dtRow As DataRow

'DataGrid新規行追加時
dtRow = dtTable.NewRow
(先に行が追加されていればその行のDataRow)

'既存データ編集時
dtRow = dtTable.Rows(インデックス)

あとはデータグリッドをクリックした時などに
CurrentRowIndexを取得するなどしてインデックスを求めてはどうでしょう?

[ メッセージ編集済み 編集者: とっと 編集日時 2005-09-08 19:13 ]
it74d
常連さん
会議室デビュー日: 2002/10/01
投稿数: 28
投稿日時: 2005-09-08 21:41
検索すると結構でてきますよ。
とりあえず、日本語では、
http://codezine.jp/a/article.aspx?aid=3
がありました。
筆者は、「おまけ」と書かれていますが、参考になると思います。

1

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