- - PR -
ASP.NETで動的に配置したコントロールの値取得
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-01-10 12:57
いつも参考にさせて頂いてます。Webプログラマーのkassiといいます。
現在、 開発サーバ:Windows2003Server DB:SqlServer2000 開発マシン:Windows2000Pro IE:6.0 ASP.NET 言語:VB で、Webシステム開発をしているのですが、動的に配置したコントロールの値取得方法がうまくいかず悩んでいます。 処理内容は、マスタに登録してあるデータ分のチェックボックスの表示をしているのですが、 従来のASPでは、 <% dim rs(レコードセット) dim i i=0 do until rs.eof %> <td><input type=text name=txt<%=i%>></td> <% i=i+1 rs.movenext Loop %> といった方法で動的にコントロールを作成し、また、値をリクエストできていたのですが、 ASP.NETで、 <% Dim da As New SqlDataAdapter(wstrsql, con) Dim ds As New DataSet("VsDotNet") Dim dtTable As DataTable Dim dtRow As DataRow Dim wstrData As String da.Fill(ds, "dotTable") dtTable = (ds.Tables("MNMACT")) con.Close() Dim mlngDataCount As Long mlngDataCount = dtTable.Rows.Count Dim i As Integer 'データ件数分チェックボックス作成 For i = 0 To mlngDataCount - 1 %> <td><asp:checkbox id=txt<%=i%>></td> <% Next %> とすると「有効な識別子ではありません。」というエラーに なってしまい、うまくいきません。 また、 <td><asp:textbox id=txt<%=i%>></td> のコードを <td><asp:textbox id=txt></td> とすると、 コントロールを作成することはできるのですが、 VB(サーバモジュール)側での値の取得方法がわかりません。 このような、動的にコントロールを作成した際の値取得方法をご存知の方がいらっしゃいましたら是非お教えいただけませんでしょうか? よろしくお願い致します。 | ||||
|
投稿日時: 2004-01-10 14:21
.Netは全然扱ってないけど、同じ名前のコントロールを複数配置した場合、IEのJavaScriptだと勝手に配列にしてしまいますね。(関係無いけど) これから考えられるサーバの挙動としては ・配列にしてしまう ・後から入ってきた値で上書きしてしまう のどっちかでしょう。 txtの値を取得して、調べてみると何になってますか? | ||||
|
投稿日時: 2004-01-10 15:21
>冬寂様
クイックレスありがとうございます。kassiです。 >txtの値を取得して、調べてみると何になってますか? ということで、早速調べてみました。 現在、マスタデータが18件なので、id=txt のテキストボックスが18個ループで作られるのですが、 それぞれ、順番に、 a b c d e f g h i j k l m n o p q r と入力し、 あるボタンを押したタイミングで、 Me.lbl.Text = Me.txt.Text とすると、 Me.lbl.Textの値(つまりMe.txt.Textの値)は、 「a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r」 となります。 カンマで区切られて入ってる辺り、冬寂さんのおっしゃる通り、配列の線が濃厚かもしれません。現在更に調査中です。 | ||||
|
投稿日時: 2004-01-10 16:24
<% %>の中にVB.NETのコードを書いているのは、
そうしなければならないプロジェクトだったりするからですか? ASP.NETでは普通はそういうことはやらないと思うんですが。 kassiさんのやりたい「データ分のチェックボックス」はCheckBoxListクラスで実装できませんか? | ||||
|
投稿日時: 2004-01-10 17:29
>一郎様
レスありがとうございます。kassiです。 ><% %>の中にVB.NETのコードを書いているのは、 >そうしなければならないプロジェクトだったりするからですか? >ASP.NETでは普通はそういうことはやらないと思うんですが。 はずかしながら私自身ASP.NETの開発が初めてということもあり、まだASPでの開発のクセが抜けてないようで・・・ 今回行いたい処理の詳細を記しますと、 項目=マスタデータ □=チェックボックス として、 項目1 |項目2 |項目3 |項目4 |項目5 | □ | □ | □ | □ | □ | 上記のようなテーブルを動的に作成したいのです。 列が増加するタイプのテーブルです。 項目1| □ 項目2| □ 項目3| □ ・ ・ というような、行が増加する形であれば、グリッドを使うことで解決できるのですが、 今回は先に記したような形でないといけないために悩んでいます。 | ||||
|
投稿日時: 2004-01-10 20:29
開発環境は?エディタでゴリゴリ書いているのでしょうか?WebMatrixを試されては?
あと、ASP.NETでは、script要素でrunat="server"属性をつけて、VB.NETを書けばいいみたいです。 | ||||
1
