C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[9]: DataGridの行の削除の仕方


(過去ログ 16 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■5521 / inTopicNo.1)  DataGridの行の削除の仕方
  
□投稿者/ とろん (4回)-(2007/07/17(Tue) 14:17:58)

分類:[C#] 

こんにちは、はじめまして。いつもお世話になっております。

質問なのですが、DataGridの行をクリックすると、その行全体を青色にし(選択された状態)
MessageBoxで"削除しますか?"といった感じのプログラムを組みたいのですが、どのように組んだらいいでしょうか?
引用返信 編集キー/
■5522 / inTopicNo.2)  Re[1]: DataGridの行の削除の仕方
□投稿者/ HIRO (49回)-(2007/07/17(Tue) 14:53:40)
HIRO さんの Web サイト
No5521 (とろん さん) に返信
> こんにちは、はじめまして。いつもお世話になっております。
>
> 質問なのですが、DataGridの行をクリックすると、その行全体を青色にし(選択された状態)
> MessageBoxで"削除しますか?"といった感じのプログラムを組みたいのですが、どのように組んだらいいでしょうか?

どのように組んだらよいか? に関してはご自分でもう答えが出ていますよね?
とろんさんがお書きになったとおりに組めばよいと思います。

その中で何がわからないのでしょうか?

1.行がクリックされたことを知る
2.行全体を青くする
3.「削除しますか?」というMessageBoxを表示する

(どのように組んだらいいでしょうか?の「どのように」を理解することが出来ませんでした。もう少し詳しく書いて頂けますか?)




引用返信 編集キー/
■5523 / inTopicNo.3)  Re[2]: DataGridの行の削除の仕方
□投稿者/ とろん (5回)-(2007/07/17(Tue) 14:59:45)
2007/07/17(Tue) 17:04:57 編集(投稿者)
2007/07/17(Tue) 15:19:39 編集(投稿者)

<pre><pre>すいません。サイトを見ていたらなんとなくわかったのですが、やはり削除の方法がわかりませんでした。下記のようにコーディングしています。

選択された行を元に戻す方法はなんとかわかりましたが、やはり行の削除に方法がわかりませんでした。

private void dataGrid1_Click(object sender, System.EventArgs e)
{
int n =
dataGrid1.BindingContext[dataGrid1.DataSource,
dataGrid1.DataMember].Count;
for (int i = 0; i < n; i++)
{
if(dataGrid1.IsSelected(i))
{
if(MessageBox.Show("削除しますか?","",MessageBoxButtons.YesNo) == DialogResult.Yes)
{
(行を削除する)

else
{
 dataGrid1.UnSelect(i);
}
}
}
}</pre></pre>
引用返信 編集キー/
■5534 / inTopicNo.4)  Re[3]: DataGridの行の削除の仕方
□投稿者/ HIRO (50回)-(2007/07/17(Tue) 18:23:22)
HIRO さんの Web サイト
No5523 (とろん さん) に返信
> 2007/07/17(Tue) 17:04:57 編集(投稿者)
> 2007/07/17(Tue) 15:19:39 編集(投稿者)
>
> <pre><pre>すいません。サイトを見ていたらなんとなくわかったのですが、やはり削除の方法がわかりませんでした。下記のようにコーディングしています。
>
> 選択された行を元に戻す方法はなんとかわかりましたが、やはり行の削除に方法がわかりませんでした。
>
> private void dataGrid1_Click(object sender, System.EventArgs e)
> {
> int n =
> dataGrid1.BindingContext[dataGrid1.DataSource,
> dataGrid1.DataMember].Count;
> for (int i = 0; i < n; i++)
> {
> if(dataGrid1.IsSelected(i))
> {
> if(MessageBox.Show("削除しますか?","",MessageBoxButtons.YesNo) == DialogResult.Yes)
> {
> (行を削除する)
> }
> else
> {
>  dataGrid1.UnSelect(i);
> }
> }
> }
> }</pre></pre>

返信が遅くなりました。
dataGridに連結しているデータソースのレコードを削除すれば良いと思うのですが...

引用返信 編集キー/
■5536 / inTopicNo.5)  Re[4]: DataGridの行の削除の仕方
□投稿者/ HIRO (51回)-(2007/07/17(Tue) 18:34:33)
HIRO さんの Web サイト
ご参考

http://dobon.net/vb/bbs/log3-7/3543.html
引用返信 編集キー/
■5544 / inTopicNo.6)  Re[5]: DataGridの行の削除の仕方
□投稿者/ とろん (6回)-(2007/07/17(Tue) 22:23:44)
ふむむ・・・本当に無知ですいません。

具体的にどのような形でdataGridに連結しているデータソースのレコードを削除すれば良いのでしょうか?

何度もすいません。
引用返信 編集キー/
■5545 / inTopicNo.7)  Re[6]: DataGridの行の削除の仕方
□投稿者/ HIRO (53回)-(2007/07/17(Tue) 22:44:57)
HIRO さんの Web サイト
No5544 (とろん さん) に返信
> ふむむ・・・本当に無知ですいません。
>
> 具体的にどのような形でdataGridに連結しているデータソースのレコードを削除すれば良いのでしょうか?
>
> 何度もすいません。

「ご参考」で示したURLに答えがあるのですが...
データグリッドで選択された行を削除するコードが掲載されていますので、もう一度読んでみてください。

その上でわからないのであれば、「どこがわからないのか」を教えていただけますか?


引用返信 編集キー/
■5578 / inTopicNo.8)  Re[7]: DataGridの行の削除の仕方
□投稿者/ もみじ (1回)-(2007/07/18(Wed) 17:54:51)
上記のULR一部抜粋

この辺がご参考になるかと思います。

//-----------------------------------------------------------
Dim dstMain As New DataSet()

'選択行(列)削除
Private Sub btnRowDelete_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnRowDelete.Click

Me.lblMsg.Text = ""
'選択されているか
If Me.dgdMain.CurrentRowIndex.Equals(-1) Then
Me.lblMsg.Text = "選択されていないので削除できません。"
Exit Sub
End If

'選択されている行の値でデータセット内のテーブル行削除
dstMain.Tables(0).Rows(Me.dgdMain.CurrentRowIndex).Delete()
'データグリッドに再表示
Me.dgdMain.SetDataBinding(dstMain, dstMain.Tables(0).TableName)

End Sub
//-----------------------------------------------------------


CurrentRowIndex は現在選択(指定)している行です。(言い換えれば、削除対象行)

間違っていたらすいません。

引用返信 編集キー/
■5771 / inTopicNo.9)  Re[8]: DataGridの行の削除の仕方
□投稿者/ とろん (7回)-(2007/07/23(Mon) 14:54:26)
こんにちは、しばらくプログラムに触ることができなかったので、返信が遅くなりました、ごめんなさい。

上記のサイトを参考にし、無事にうまく行を削除することはできました。

しかし、また問題が出てきてしまいました。

列の一つにbニいうのを設けており、そこにdataGrid1.VisibleRowCountで行数を表示させているのですが、行を削除したあと、
1,2,3という行があったとして、2を削除すると1,3となってしまいます。

ここで2を削除すると、自動的に1,2といった形に数字を上詰めさせたいのですが、可能でしょうか?

返信が遅くなったうえ、さらに質問してしまい、ご迷惑をおかけしますがどうぞよろしくお願い致します。
引用返信 編集キー/
■5964 / inTopicNo.10)  Re[9]: DataGridの行の削除の仕方
□投稿者/ reiya (1回)-(2007/07/27(Fri) 11:27:38)
参考HP
http://dobon.net/vb/dotnet/datagrid/autoincrement.html

上記のサイトで書いてある限りではできるようです。
C#用のコードもそのまま記載されているので、それをお使いになればよろしいかと思います。

発言一回目でこんなことを言ってもいいのかはわかりませんが
少々ご自分で、検索をしてから質問をなさった方がいいと思います。

上記のサイトは、とろんさんの発言から、それっぽい言葉を抜き出し
googleで検索した結果、一番上に出てきたサイトです。

ちなみに、ただ連番を自動で振りたいだけなのでしょうか?
今は自動じゃないけど連番は振れている、と言うことなのでしょうか?

なぜこのようなことを言うかというと、とろんさんからは、
「ご自身で調べて処理を作った」と言う心が感じ取れません。

もし今回質問するのでしたら、下記のようなほうがよかったと思われます。
>(省略) 1,2,3という行があったとして、2を削除すると1,3となってしまいます。
>グリッドの1行目から最終行までループ処理を行い、連番を振りなおすことはできるのですが
>件数が多いため、処理に時間がかかってしまいます。
>処理の内容は下記のとおりになります
(面倒なので省略)

>件数が多い場合でも、安定した時間で処理を行えるようにするためには、どのようにしたらよいか
>よろしければご教授お願いいたします。

>又、Excelの固定列の行番のように固定で表示または、自動で不番してくれるような機能は存在するのでしょうか。

と、あまりいい例ではありませんがこのように
「どのように作業を行い」「結果がこうで」「このように改善したい」
と、質問をすれば、それに伴った返答を解していただけると思います。

ただ単に「これがわからないので教えてください」
と返すと「自分で調べろ」と言う答えを遠まわしに言われてしまって終わってしまいます。

書き込み一回目の癖に長文失礼しました。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -