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

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

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

Re[2]: DataGridView行内の特定の値の数を数える


(過去ログ 176 を表示中)

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

■100924 / inTopicNo.1)  DataGridView行内の特定の値の数を数える
  
□投稿者/ ash (1回)-(2022/11/27(Sun) 15:27:04)

分類:[.NET 全般] 

2022/11/27(Sun) 15:43:48 編集(投稿者)
Visual StudioでC#を使ってシステムの開発を行っています

DataGridiView内の一行の中での特定の値(○印)の数を数え、最後の列に○印の数を表示したいです。(行は複数あります)

行内の特定の値の数を数えるためにはどうすればいいのでしょうか。

            var count = dgvQ項目.Columns.Cast<DataGridViewCell>().Count(colums => dgvQ項目.Rows[1].Cells.Value == "○");
            dgvQ項目.Rows[1].Cells[100].Value = count.ToString();

とりあえず一行目だけ数えるものとして上記のように考えてみたのですが、エラーが出てしまいます。
是非ご教授いただきたいです。

引用返信 編集キー/
■100925 / inTopicNo.2)  Re[1]: DataGridView行内の特定の値の数を数える
□投稿者/ WebSurfer (2589回)-(2022/11/27(Sun) 17:01:38)
No100924 (ash さん) に返信

何を何で作っているか書いてください。(例: Windows 10 の Visual Studio 2022 で Windows
Forms アプリをターゲットフレームワーク .NET Framework 4.8 で作っています・・・とか)

どういう構成になっているか書いてください。
(例: SQL Server ⇔ SqlDataAdapter ⇔ DataTable ⇔ BindingSource ⇔ DataGridView)
引用返信 編集キー/
■100926 / inTopicNo.3)  Re[1]: DataGridView行内の特定の値の数を数える
□投稿者/ KOZ (359回)-(2022/11/27(Sun) 18:32:06)
No100924 (ash さん) に返信
> var count = dgvQ項目.Columns.Cast<DataGridViewCell>().Count(colums => dgvQ項目.Rows[1].Cells.Value == "○");
> dgvQ項目.Rows[1].Cells[100].Value = count.ToString();
> とりあえず一行目だけ数えるものとして上記のように考えてみたのですが、エラーが出てしまいます。

何のエラーなのか書きましょう。コンパイルエラーですか?

var count = dgvQ項目.Columns.Cast<DataGridViewColumn>().Count(colums => "○".Equals(dgvQ項目.Rows[1].Cells[colums.Index].Value));

こうかな?

引用返信 編集キー/
■100928 / inTopicNo.4)  Re[1]: DataGridView行内の特定の値の数を数える
□投稿者/ 魔界の仮面弁士 (3498回)-(2022/11/28(Mon) 09:22:39)
No100924 (ash さん) に返信
> 最後の列に○印の数を表示したいです。(行は複数あります)
> dgvQ項目.Rows[1].Cells[100].Value = count.ToString();

.Cells[100].Value ということは、列が 101 個(0〜100) あり、
最初の 100 列(0〜99)を集計したい、ということですね。

かつ、count ではなく count.ToString() を代入しているということは、
dgvQ項目.Columns[100].ValueType は typeof(int) ではなく、typeof(string) と想定。


int rowMax = dgvQ項目.RowCount;
if (dgvQ項目.AllowUserToAddRows) { rowMax--; } // 新規行は調査対象外なので -1

int colMax = dgvQ項目.ColumnCount - 1; // 最後の列は集計対象外なので -1

for (int r = 0; r < rowMax; r++)
{
  dgvQ項目[colMax, r].Value = Enumerable.Range(0, colMax).Count(c => "○".Equals(dgvQ項目[c, r].Value)).ToString();
}
引用返信 編集キー/
■100930 / inTopicNo.5)  Re[2]: DataGridView行内の特定の値の数を数える
□投稿者/ ash (2回)-(2022/11/28(Mon) 14:40:25)
No100928 (魔界の仮面弁士 さん) に返信

> .Cells[100].Value ということは、列が 101 個(0〜100) あり、
> 最初の 100 列(0〜99)を集計したい、ということですね。
>
> かつ、count ではなく count.ToString() を代入しているということは、
> dgvQ項目.Columns[100].ValueType は typeof(int) ではなく、typeof(string) と想定。

他の方のご指摘にもある通り、説明不足な質問内容だったにも関わらず、分かりやすく答えてくださりありがとうございます。
とても助かりました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -