- PR -

ASP.NETで動的に配置したコントロールの値取得

1
投稿者投稿内容
kassi
会議室デビュー日: 2004/01/10
投稿数: 6
投稿日時: 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(サーバモジュール)側での値の取得方法がわかりません。

このような、動的にコントロールを作成した際の値取得方法をご存知の方がいらっしゃいましたら是非お教えいただけませんでしょうか?

よろしくお願い致します。
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2004-01-10 14:21
コード:
<td><asp:textbox id=txt></td> 

とすると、 
コントロールを作成することはできるのですが、 
VB(サーバモジュール)側での値の取得方法がわかりません。 


.Netは全然扱ってないけど、同じ名前のコントロールを複数配置した場合、IEのJavaScriptだと勝手に配列にしてしまいますね。(関係無いけど)
これから考えられるサーバの挙動としては
・配列にしてしまう
・後から入ってきた値で上書きしてしまう
のどっちかでしょう。

txtの値を取得して、調べてみると何になってますか?
kassi
会議室デビュー日: 2004/01/10
投稿数: 6
投稿日時: 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」

となります。

カンマで区切られて入ってる辺り、冬寂さんのおっしゃる通り、配列の線が濃厚かもしれません。現在更に調査中です。

一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-01-10 16:24
<% %>の中にVB.NETのコードを書いているのは、
そうしなければならないプロジェクトだったりするからですか?
ASP.NETでは普通はそういうことはやらないと思うんですが。

kassiさんのやりたい「データ分のチェックボックス」はCheckBoxListクラスで実装できませんか?
kassi
会議室デビュー日: 2004/01/10
投稿数: 6
投稿日時: 2004-01-10 17:29
>一郎様

レスありがとうございます。kassiです。

><% %>の中にVB.NETのコードを書いているのは、
>そうしなければならないプロジェクトだったりするからですか?
>ASP.NETでは普通はそういうことはやらないと思うんですが。

はずかしながら私自身ASP.NETの開発が初めてということもあり、まだASPでの開発のクセが抜けてないようで・・・


今回行いたい処理の詳細を記しますと、

項目=マスタデータ
□=チェックボックス

として、

項目1 |項目2 |項目3 |項目4 |項目5 |
 □ | □ | □ | □ | □ |

上記のようなテーブルを動的に作成したいのです。
列が増加するタイプのテーブルです。

項目1| □
項目2| □
項目3| □
  ・
  ・

というような、行が増加する形であれば、グリッドを使うことで解決できるのですが、
今回は先に記したような形でないといけないために悩んでいます。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-01-10 20:29
 開発環境は?エディタでゴリゴリ書いているのでしょうか?WebMatrixを試されては?

 あと、ASP.NETでは、script要素でrunat="server"属性をつけて、VB.NETを書けばいいみたいです。
1

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