質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

1回答

3356閲覧

repeaterの情報をチェックされた行のみ取り出したい

tototan

総合スコア34

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2021/10/26 02:22

編集2021/10/26 08:08

実現したい事

repeaterで取得した一覧からチェックボックスのチェックされた行のみを取り出して一覧で表示したい。
いろいろググってみましたが、ヒットしませんでした。
ご教授よろしくお願いします。

環境

ASP.NET
VisualStudio2017
.net framework 4.8

repeaterからの取得画面

イメージ説明

ソース

デザイン側

aspx

1<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 2 3 <%--ヘッダ--%> 4 <asp:Panel ID="Pnl84H" runat="server"> 5 <div class="container" style=""> 6 <div class="row"> 7 <div style= "padding: 0px; text-align: center"> 8 <asp:CheckBox ID="chk_no0" runat="server" Checked="False" AutoPostBack="True" OnCheckedChanged="Ch_no0_CheckedChanged" /> 9 </div> 10 <div style="padding: 0px; text-align: center; border: solid; border-width: 1px;"> 11 <span id="Label1" class="tblheader1">No</span> 12 </div> 13 <div > 14 <div class="row"> 15 <div style="border: solid; border-width: 1px;"> 16 <span id="Label2" >名前</span>&nbsp;&nbsp; 17 </div> 18 <div style=" border: solid; border-width: 1px;"> 19 <span id="Label3" >メールアドレス</span> 20 </div> 21 <div style=" border: solid; border-width: 1px;"> 22 <span id="Label4" >電話番号</span> 23 </div> 24 </div> 25 </div> 26 </div> 27 </div> 28 </asp:Panel> 29 30 31 <%--明細--%> 32 <asp:Panel ID="Pnl84" runat="server"> 33 <div class="container" style=""> 34 <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound"> 35 <ItemTemplate> 36 <div class="row"> 37 <div style="padding: 0px; text-align: center; border: solid; border-width: 1px;"> 38 <asp:CheckBox ID="chk_no1" runat="server" /> 39 </div> 40 <div > 41 <div class="row"> 42 <div style="border: solid; border-width: 1px;"> 43 <asp:TextBox ID="txtName_1" runat="server" Text='<%# Eval("NAME") %>' Enabled="False" BorderStyle="None"></asp:TextBox> 44 </div> 45 <div style="border: solid; border-width: 1px;"> 46 <asp:TextBox ID="txtMail_1" runat="server" Text='<%# Eval("MAIL") %>' Enabled="False" BorderStyle="None"></asp:TextBox> 47 </div> 48 <div style="border: solid; border-width: 1px;"> 49 50 <asp:Label ID="lblTel_1" runat="server" Text='<%# Eval("TEL") %>'></asp:Label> 51 </div> 52 </div> 53 </div> 54 </div> 55 </ItemTemplate> 56 </asp:Repeater> 57 </div> 58 </asp:Panel> 59 60</asp:Content>

コード側

C#

1 public partial class TestList 2 { 3 public string pageFlg; 4 5 protected void Page_Load(object sender, EventArgs e) 6 { 7 if (!IsPostBack) 8 { 9 10 using (var sqlCon = new SqlConnection("Data Source = XXXXXXXXXX; Initial Catalog = Test; Integrated Security = True")) 11 { 12          DataTable dt = new DataTable(); 13 var com = sqlCon.CreateCommand(); 14 comm.CommandText = "SELECT * FROM TBL_1"; 15 var sda = new SqlDataAdapter(com); 16 sda.Fill(dt); 17 } 18 19 Repeater1.DataSource = dt; 20 Repeater1.DataBind(); 21 } 22 } 23 24 protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) 25 { 26 } 27  }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/10/26 03:32

質問は編集できるので、無駄にスレッドを立てるのではなく、前のスレッド https://teratail.com/questions/366152 を編集するようにしてください。
退会済みユーザー

退会済みユーザー

2021/10/26 03:40

質問欄に提示されたコードで質問の画像の Repeater が表示されるはずはないし、そもそもコンパイルも通らないのでは?
退会済みユーザー

退会済みユーザー

2021/10/27 04:30

質問者さん、無言ですか、回答したのでそれに対するフィードバックを書いてください。役に立った/立たなかったぐらいのフィードバックならすぐ返せるのでは? 役に立たなかったならどこがダメだったか書いてもらえるとより期待するものに近い回答が出てくるかも。とにかく無言で放置は NG です。
tototan

2021/10/28 01:33

大変失礼しました。 このサイトの使い方について慣れていないため回答者様の気分を害してしまって申し訳ありませんでした。 教えていただいたURLを参考にチェックされた行の情報をテキストで取得することはできましたが、 自分のスキル不足で編集ボタン押下でチェックされた行のみの一覧を表示することができませんでした。 また説明不足でしたが、ヘッダーは固定にして詳細部分のみパネルで切り替えをしたいと思っています。できれば今のrepeaterをそのまま使えればベストです。
退会済みユーザー

退会済みユーザー

2021/10/28 01:35

回答に対するレス・質問などはここではなく回答欄の下のコメント欄に書いてください。
退会済みユーザー

退会済みユーザー

2021/10/28 06:10 編集

あなたの 2021/10/28 10:33 のコメントにレスが必要なら、依頼されたこと(ここではなく回答欄の下のコメント欄に書く)をちゃんとやってください。
guest

回答1

0

ベストアンサー

.net framework 4.8

何故今時 Repeater を使っているのか分かりませんが、ASP.NET 3.5 以降なら ListView を使えるので、どうしても Repeater という理由が無ければ、ListView を使いましょう。それならサンプルを紹介できます。

ListView に配置した CheckBox で選択
http://surferonwww.info/BlogEngine/post/2012/03/17/Select-items-by-CheckBox-placed-in-ListView.aspx

GirdView では使いたい html 要素が使えないとか CSS の適用などデザインが自由にできなかったのですが、ListView なら自由度は Repeater とほぼ同じなので、使えない理由はないと思います。

投稿2021/10/26 09:53

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tototan

2021/10/28 06:13

大変失礼しました。 このサイトの使い方について慣れていないため回答者様の気分を害してしまって申し訳ありませんでした。 教えていただいたURLを参考にチェックされた行の情報をテキストで取得することはできましたが、 自分のスキル不足で編集ボタン押下でチェックされた行のみの一覧を表示することができませんでした。 また説明不足でしたが、ヘッダーは固定にして詳細部分のみパネルで切り替えをしたいと思っています。できれば今のrepeaterをそのまま使えればベストです。
退会済みユーザー

退会済みユーザー

2021/10/28 06:34

> 教えていただいたURLを参考にチェックされた行の情報をテキストで取得することはできましたが、自分のスキル不足で編集ボタン押下でチェックされた行のみの一覧を表示することができませんでした。 紹介した記事で取得しているのはチェックを入れたレコードの主キーです。なので、その主キーのレコードを抽出する SELECT クエリを作って(SQL Server なら IN 句が使えます)、それを SqlDataSource の SelectCommand に設定してやればいいと思います。 手動での ListView のデータバインドが必要か、SqlDataSource が自動的にやってくれるかは不明ですので、自分で確認してください。 > また説明不足でしたが、ヘッダーは固定にして詳細部分のみパネルで切り替えをしたいと思っています。 意味が分かりません。 > できれば今のrepeaterをそのまま使えればベストです。 Repeater は、ListView の DataKeys プロパティのような、主キーを取得できるプロパティがないところが問題です。そこを質問者さんが何とかできれば使えると思います。
tototan

2021/10/28 09:48

>意味が分かりません。 →ブルーの背景のタイトル部分を固定にしてデータ部分を切り替えるよていです。 細かい説明ありがとうございました。 大変参考になりました。
退会済みユーザー

退会済みユーザー

2021/10/28 11:42

> ブルーの背景のタイトル部分を固定にしてデータ部分を切り替えるよていです。 それは Repeater を使うにせよ ListView を使うにせよ、SELECT クエリを変更して再描画すれば自動的にそうなります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問