tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルDataGridViewの選択した行を取得して修正したいのですが。
記事No6063
投稿日: 2007/08/09(Thu) 14:40
投稿者kokoro
DataGridView1の選択した行を修正したいのですが、

        For i = 0 To i - 1  
         ?  

            KYU20000_1.TextBox1.Text = datatable.Rows(i).Item(0)
            KYU20000_1.TextBox2.Text = datatable.Rows(i).Item(1)
            KYU20000_1.TextBox3.Text = datatable.Rows(i).Item(2)
            MessageBox.Show("インデックス", Code)

        Next

[ツリー表示へ]
タイトルRe: DataGridViewの選択した行を取得して修正したいのですが。
記事No6064
投稿日: 2007/08/09(Thu) 15:01
投稿者かさのば
本題と関係ないですが

>>For i = 0 To i - 1

ナニコレ

[ツリー表示へ]
タイトルRe^2: DataGridViewの選択した行を取得して修正したいのですが。
記事No6065
投稿日: 2007/08/09(Thu) 15:11
投稿者kokoro
> 本題と関係ないですが
>
> >>For i = 0 To  - 1
>
> ナニコレ

間違いました。

For i = 0 To  - 1

[ツリー表示へ]
タイトルRe^3: DataGridViewの選択した行を取得して修正したいのですが。
記事No6066
投稿日: 2007/08/09(Thu) 15:37
投稿者魔界の仮面弁士
> For i = 0 To  - 1

これだと、一回もループされませんよ。(Step 1 になっているので)

[ツリー表示へ]
タイトルRe^4: DataGridViewの選択した行を取得して修正したいのですが。
記事No6067
投稿日: 2007/08/09(Thu) 15:41
投稿者かさのば
> > For i = 0 To  - 1
魔界の仮面弁士さんもご指摘されてるように、これでは何も改善されていません。
とりあえず下記リンク先を読んでください。
http://vbnet-iku2.hp.infoseek.co.jp/lecture07.htm

[ツリー表示へ]
タイトルRe^5: DataGridViewの選択した行を取得して修正したいのですが。
記事No6086
投稿日: 2007/08/10(Fri) 16:07
投稿者kokoro
> > > For i = 0 To  - 1
> 魔界の仮面弁士さんもご指摘されてるように、これでは何も改善されていません。
> とりあえず下記リンク先を読んでください。
> http://vbnet-iku2.hp.infoseek.co.jp/lecture07.htm
読んで考えてみます。色々ありがとうございます。

[ツリー表示へ]
タイトルRe^6: DataGridViewの選択した行を取得して修正したいのですが。
記事No6095
投稿日: 2007/08/16(Thu) 16:23
投稿者abi
> > > > For i = 0 To  - 1
> > 魔界の仮面弁士さんもご指摘されてるように、これでは何も改善されていません。
> > とりあえず下記リンク先を読んでください。
> > http://vbnet-iku2.hp.infoseek.co.jp/lecture07.htm
> 読んで考えてみます。色々ありがとうございます。

いやいや(汗)
何も解決してないですから


for i as integer =0 to GridView.SelectedCells.Count-1
    
GridView.SelectedCells.Item(0).Item(i)="変更データ"

next

デバッグしてませんが・・・これでうまくいかないですか?

[ツリー表示へ]
タイトルRe^7: DataGridViewの選択した行を取得して修正したいのですが。
記事No6155
投稿日: 2007/08/27(Mon) 12:34
投稿者kokoro
> > > > > For i = 0 To  - 1
> > > 魔界の仮面弁士さんもご指摘されてるように、これでは何も改善されていません。
> > > とりあえず下記リンク先を読んでください。
> > > http://vbnet-iku2.hp.infoseek.co.jp/lecture07.htm
> > 読んで考えてみます。色々ありがとうございます。
>
> いやいや(汗)
> 何も解決してないですから
>
>
> for i as integer =0 to GridView.SelectedCells.Count-1
>    
> GridView.SelectedCells.Item(0).Item(i)="変更データ"
>
> next
>

> デバッグしてませんが・・・これでうまくいかないですか?

ありがとうございます。時間経過して申し訳ありません。
早速試してご報告します。

[ツリー表示へ]
タイトルRe^8: DataGridViewの選択した行を取得して修正したいのですが。
記事No6172
投稿日: 2007/08/27(Mon) 16:14
投稿者kokoro
> > > > > > For i = 0 To  - 1
> > > > 魔界の仮面弁士さんもご指摘されてるように、これでは何も改善されていません。
> > > > とりあえず下記リンク先を読んでください。
> > > > http://vbnet-iku2.hp.infoseek.co.jp/lecture07.htm
> > > 読んで考えてみます。色々ありがとうございます。
> >
> > いやいや(汗)
> > 何も解決してないですから
> >
> >
> > for i as integer =0 to GridView.SelectedCells.Count-1
> >    
> > GridView.SelectedCells.Item(0).Item(i)="変更データ"
> >
> > next
> >
>
> > デバッグしてませんが・・・これでうまくいかないですか?
>
> ありがとうございます。時間経過して申し訳ありません。
> 早速試してご報告します。

  If DataGridView1.CurrentRow.Selected = False Then
            Answer = MsgBox("行を選択してください", MsgBoxStyle.OkOnly)
            If Answer = MsgBoxResult.Ok Then
                Exit Sub

            End If
        Else
            Code = CStr(DataGridView1.Item(0, CInt(DataGridView1.CurrentRow.Index.ToString())).Value)
修正したい行を選択して、次のForm4のテキストボックスにデータを表示させたいのです。
TextBox1.TextにはID番号(002を選択したとします。)
TextBox2.Textには姓(山田を選択したとします。)
と登録しています。



            For i As Integer = 0 To DataGridView1.SelectedCells.Count - 1

            Next

            DataGridView1.SelectedCells.Item(0).Item(0) = "変更データ"
            DataGridView1.SelectedCells.Item(1) = ""
          
next


        End If
        Me.Close()
        Form4.Show()

[ツリー表示へ]
タイトルRe^9: DataGridViewの選択した行を取得して修正したいのですが。
記事No6215
投稿日: 2007/09/03(Mon) 06:47
投稿者abi
        For i As Integer = 0 To DataGridView1.SelectedCells.Count - 1

            TextBox1.Text = DataGridView1.Rows(DataGridView1.SelectedCells(0).RowIndex).Cells(0).Value

        Next


これで選択されたグリッドのデータが取得できますね。

[ツリー表示へ]
タイトルRe^10: DataGridViewの選択した行を取得して修正したいのですが。
記事No6216
投稿日: 2007/09/03(Mon) 11:12
投稿者魔界の仮面弁士
> For i As Integer = 0 To DataGridView1.SelectedCells.Count - 1
>   TextBox1.Text = DataGridView1.Rows(DataGridView1.SelectedCells(0).RowIndex).Cells(0).Value
> Next
> これで選択されたグリッドのデータが取得できますね。

それだと、いろいろとマズイです。


(1) 「選択行」を得るために、SelectedCells を利用している。
→ 行を得たいのであれば、SelectedRows を使うべきかと。

(2) ループ内で、同一 TextBox に読み取っている。
→ 複数行が選択されていた場合、これでは最後の行しか得られません。
  サンプルゆえの事かも知れませんが、せめて ListBox の方が良いかも。

(3) ループ中で、何度も SelectedCells プロパティにアクセスしている。
→ SelectedCells は、選択範囲のサイズが大きいと効率が低下します。
  For Each に切り替えたり、一度変数に入れてからアクセスするなど、
  使い方を見直すべきかと。


http://msdn2.microsoft.com/ja-jp/library/ha5xt0d9%28VS.80%29.aspx

《選択されたセルの数を得る場合》

.SelectedCells.Count を使うのではなく、そのかわりに
.GetCellCount(DataGridViewElementStates.Selected) を利用します。


《選択された行の数を得る場合》

.SelectedRows.Count を使うのではなく、そのかわりに
.Rows.GetRowCount(DataGridViewElementStates.Selected) を利用します。


《選択された列の数を得る場合》

.SelectedColumns.Count を使うのではなく、そのかわりに
.Columns.GetColumnCount(DataGridViewElementStates.Selected) を利用します。


《セルの選択モードについて》

セル単位での選択が必要とされていない場合には、SelectionMode プロパティを
FullRowSelect または FullColumnSelect に設定しておきます。

[ツリー表示へ]
タイトルRe^9: DataGridViewの選択した行を取得して修正したいのですが。
記事No6217
投稿日: 2007/09/03(Mon) 13:56
投稿者魔界の仮面弁士
# 本題については既に回答が付いているので、別な点について書き込み。


> Code = CStr(DataGridView1.Item(0, CInt(DataGridView1.CurrentRow.Index.ToString())).Value)

.CurrentRow.Index は、「Integer型」の値を返すものです。
それをわざわざ .ToString() で String型に変換した後、
CInt で元の Integer に戻しているので、意味がありません。

ここは単純に、
 Code = CStr(DataGridView1.Item(0, DataGridView1.CurrentRow.Index).Value)
で十分でしょう。


さらに言えば、.CurrentRow.Index を、現在のセルの行番号を得るだけの目的で
用いるというのは、少々冗長です。かわりに、.CurrentCellAddress.Y を用いて
みてください。行/列の番号を得るだけなら、こちらの方が効率が良いとされています。

http://msdn2.microsoft.com/ja-jp/library/ha5xt0d9%28VS.80%29.aspx

[ツリー表示へ]