QA@IT

DBアクセスをしないListViewの編集について

9136 PV

初めて投稿させて頂きます。

初心者で
C#、Visual Studioを使用しWebアプリケーションの作成をしております。
(独習ASP.NET 5 の本とネット検索にて勉強をしながらです。)

ListViewを使用し、DBアクセス(編集・更新・削除)はできるようになりましたが
ListViewを使って、DBアクセスなしで編集・更新・削除の処理をしたく、苦戦しております。

c#側にてdatasetを作成し、
ListViewのデータソースを上記のdatasetとし
ListView_ItemEditingメソッドも作成し、このメソッドにたどり着くまではできたのですが
編集ボタンを押してもListViewのLabelがTextとなってくれません…。

初期表示後
☆編集ボタンをクリック(一回目)
・PageLoad→ListView_ItemEditingメソッド
 の順番でプログラムが進行し、画面が表示される
 (※ListViewが編集になっていない)

☆編集ボタンをクリック(二回目)
・PageLoad
 のみで画面が表示されるのですが
 このタイミングで編集モードとなり表示される。

画面を再描画した後に編集モードとなっているような気がするのですが
皆目見当がつかず…苦戦しております。

説明がとても分かりづらく、文言等、変なところもあるとは思いますが
お教えいただけると幸いです。

以上、よろしくお願い致します。


@2018.05.29 追記

最終的に実現したい動きとしまして
画面上にあるTextBoxの値をテーブルAに(1レコード)
画面上にあるListViewの値をテーブルBに(複数レコード)
登録をしたく思っております。

上記のListViewを
画面上で
ユーザが登録、削除、編集し
その結果をテーブルBへ登録する

というところで苦戦しております。


  • Windows Forms アプリで DataGridView, BindingSource, 型付 DataSet + TableAdapter を使うときのようにしたいと言ってますか? Web アプリはステートレスなので、そういうことは特別なことをしない限りできないということは認識してますか? ブラウザとサーバーで起こっていることの違いを認識できていますか? -
  • お返事ありがとうございます。
    勉強中で、わからないことが多々ありご迷惑をお掛けして申し訳ありません。

    拡張子がaspx、aspx.csというファイルで作成をしており
    Windows Formは触ったことがなく、同じものかどうかが分かりかねます…
    -
  • 本に記載があったのですが、データソースを選択すればVisualStudio側で
    編集や削除等を組み込んでくれていたのは
    一度サーバー側へ行ったから実現可能だった
    ということになるのでしょうか…?

    c#側で編集の時、削除の時、というように記載をしないのだろうということ位しか
    理解できておりません…
    -

回答

ListViewを使用し、DBアクセス(編集・更新・削除)はできるようになりましたが

と書いてありましたが、それは SqlDataSource のようなデータソースコントロールと ListView を組み合わせて使った定番のアプリで、一回の操作で一行ずつ編集・更新・削除することはできるようになったということでいいのですか?

ListViewを使って、DBアクセスなしで編集・更新・削除の処理をしたく、

というのが意味不明ですが、2018.05.29 追記に書いてあることがそれなんですか?

つまり、一回の操作で一行ずつではなく、ListView に表示されている複数行を一度に編集して、複数行の編集結果を一気にデータベースのテーブル B に反映して更新をかけたいということですか?

それは Visual Studio のウィザードベースで作るような ASP.NET Web Forms アプリではできません。前に書きましたが、Web アプリはステートレスですから(=Windows Forms アプリのように、クライアントの PC に DataSet / DataTable のインスタンスを保持できないので)。

ただし、基本ステートレスなのを自力でコードを書いてステートフルにするような特別なことをするスキルが質問者さんにあれば話は別ですが。

例えば、GridView + SqlDataSource を使った例ですが、複数行の一括編集・一括更新を行うのは、以下のチュートリアルようなコードを自力で書けば可能です。(この例では登録・削除はできません)

チュートリアル : GridView Web サーバー コントロールにバインドされた行の一括更新を実行する
https://msdn.microsoft.com/ja-jp/library/aa992036(v=vs.100).aspx

トランザクションも設定してないし、個人的にはちょっと乱暴すぎると思うのでお勧めはしませんが、どうしてもということであれば、上記のチュートリアルを参考に考えてみてはいかがでしょう。

編集 履歴 (0)
  • ご寧寧なお返事、ありがとうございます。

    ①一回の操作で一行ずつ編集・更新・削除することはできるようになったということでいいのですか?

    はい。
    その通りでして、一回の操作で一行ずつ編集・更新・削除することができるようになりました。
    -
  • ②ListViewを使って、DBアクセスなしで編集・更新・削除の処理をしたく、…

    そうです。
    文章力がなく、分かりにくい文章で大変申し訳ありませんが
    そちらの認識で合っています。
    分かり易く文章にまとめていただき、ありがとうございます…。
    -
  • 参考URLまで貼っていただきありがとうございます…!
    まだまだ勉強不足で、分からないことが多いですが、
    こちらを参考にさせて頂いて一度どのような動きをしているのか等
    勉強しなおしたいと思います。

    この度は、ご丁寧な説明、また親切に質問にお答え頂きありがとうございます。

    また、何か壁にぶつかった際には質問させて頂きたく思いますので
    その際はご教授いただけると幸いです。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。