- PR -

テキストボックスから値を受け取り、複数行ループでUPDATEする方法

1
投稿者投稿内容
WOW
会議室デビュー日: 2007/02/15
投稿数: 9
投稿日時: 2007-02-16 14:31
はじめまして。
まだ初めて数週間の初心者なので、探り探りでわからないことだらけで困っています。
いろいろ調べてましたが、よくわかりませんでした。

Windowsサーバー2003
ASP.NET2.0
Visual Studio2005
aspxで記述しています。
SQL Serever2003

質問できるレベルの内容になっていなかったら御指摘願います。


ページロード時に”select * from TABLE_A”を発行して、
画面上にTABLE_Aのデータを表形式で、テキストボックスによりリスト表示させています。
その表の下に、”更新”ボタンがあり、更新ボタンを押下すると、
テキストボックスに入力された複数行のデータを、キーとなる項目を基に、1レコードずつ更新させたいと思っています。

現状では、更新ボタンをクリックして、リスト表示された(SELECTで抽出した件数)回数ループ処理を
行うことはできているのですが、
テキストボックスの値を取得して、その値での更新が行えない状態です。

FindControlなどでなんとかなるのかもわかりませんが、記述方法などわからず、
うまくいきません。
ソースを見てわかる方がいましたら、教えていただけますでしょうか。



’登録ボタンを押下した時に、画面上のテキストボックスに入力した値で、データを1行1行テーブルに更新したい。
Sub Submit_Click(ByVal Src As Object, ByVal E As EventArgs)

Dim I As Long

For I = 0 To MyDataList.Items.Count - 1

Dim DS2 As DataSet
Dim MyConnection2 As SqlConnection
Dim MyCommand2 As SqlDataAdapter
’UPDATEを、画面上のテキストボックスに入力された値で実行したい。
現状、画面上のテキストボックスの値を取得できない。(方法がわからない)
Dim updatetxt As String = "UPDATE TABLE_A SET KOUSIN = <画面上で入力した値:ここに取得した値を入れたい> WHERE KEY_A = <画面表示されている項目:ここに取得した値を入れたい>"

MyConnection2 = New SqlConnection("")
MyCommand2 = New SqlDataAdapter(updatetxt, MyConnection2)

DS2 = New DataSet()
MyCommand2.Fill(DS2, "TABLE_A")
MyDataList.DataBind()

Next
End Sub


ここまでが<script>の内容。



<body topmargin="0" leftmargin="0" marginwidth="0" marginheight="0">

<form id="Form1" runat="server">

<ASP:DataList id="MyDataList" RepeatColumns="1" runat="server">

<ItemTemplate>
<asp:textbox ID="Num" runat="server" ReadOnly="true" text='<%# Bind("KEY_A") %>'></asp:textbox>
<asp:textbox ID="Num" runat="server" ReadOnly="true" text='<%# Bind("KOUSIN") %>'></asp:textbox>
</ItemTemplate>

</ASP:DataList>

’更新ボタンを押下すると、更新処理を実行。
<div style="padding:0,15,0,15">
<input id="Submit1" type="submit" value="更新" onserverclick="Submit_Click" runat="server"/>
</div>

</body>



申し訳ないですが御教授よろしくお願いいたします。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-02-16 15:15
いまどきASP.NETでこんな試みをする人がいるとは・・・
なぜTextBoxから更新?普通にTableレイアウトなさーばーこんとろーる使ったらどう?
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2007-02-16 15:30
画面上のコントロールが増えたら、どうするんだろう・・・

まずは、ASP.NET 関連の本を1冊読むか、ネットで基本的なページを探して読んではいかがでしょうか?

結論は、ぶさいくろうさんがおっしゃる通り、GridView (だっけ?)を使ってみて下さい。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2007-02-16 15:32
要件的に画面が表示されたタイミングでリスト上の全ての行が編集可能である必要があるのでしょうか?
必要ないのであればぶさいくろう氏がおっしゃっているようにGridView等を使ったほうがいいかと思います。

ASP.NET 2.0 の GridView コントロールおよび DetailsView コントロールの紹介
http://msdn.microsoft.com/library/ja/jpdnvs05/htm/asp2.0/GrdDetView.asp?frame=true

#ちなみにGridViewで全てを編集可能状態で表示できるかどうかは、知らないです。。。
WOW
会議室デビュー日: 2007/02/15
投稿数: 9
投稿日時: 2007-02-16 15:43
ぶさいくろう様

ご回答ありがとうございます。

ASP.NET本格的に始めて1週間程度なもので申し訳ないです。。。

現在作ろうとしているものは、管理者がテーブルの中身を画面上で更新するという要件なんです。
テーブルのデータをテキストボックスに編集可能状態で画面に出し、
それを複数レコード分修正して、更新ボタンを押下すると全てが更新されるというものを作りたいんですが、テキストやネットなどで格闘した結果が今の状態なんです。

こういうやりかたではやらないのでしょうか?
あと少しでやりたいことができそうなんですが、昨日からそこでハマってしまってます。


ひろれい様

ご回答ありがとうございます。

現在ASP.NETの本を2冊買って読んでいるところなんですが、
やはり基礎がちゃんとしていないまま、期限に追われる毎日になってしまっています。
GridView調べてみます。ありがとございます。


burton999様

ご回答ありがとうございます。

要件としまして、画面が表示されたタイミングで全ての行が編集可能状態になっていないといけないんですよ。
そして更新ボタンは各行にあるのではなく、表の上または下に1つあって、
一気に画面上で修正して、更新ボタンを1回押下すれば全てのレコードが
画面上のデータで更新する、という要件なんです。

1行1行に編集ボタンや更新ボタンが付いていて、編集ボタンを押下すると
その1行が編集可能になり、更新も簡単にできたのですが、
今回の要件がそのようなものではなかったので、いろいろ試しているところなんです。

GridViewではやはり無理ということでしょうか?
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2007-02-16 16:01
技術的にはできるっぽいですね。

GridViewでの編集について - MSDNフォーラム
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=550325&SiteID=7

できたら、報告してくれると嬉しいです。
WOW
会議室デビュー日: 2007/02/15
投稿数: 9
投稿日時: 2007-02-16 16:11
burton999様

技術的には可能ですか。
こちらの技術力がなく、なかなかやりたいことにたどり着かないのが現状です。

自分はこのサイトを見て、最後の人の結果から今のソースをどうにか組み立てていたところでした。
http://vsug.jp/tabid/63/forumid/42/postid/5111/view/topic/Default.aspx
1

スキルアップ/キャリアアップ(JOB@IT)