- PR -

ASP.NETで実現できるでしょうか?

1
投稿者投稿内容
KM
会議室デビュー日: 2007/02/14
投稿数: 15
投稿日時: 2007-02-22 11:42
ASP.NETで
Webフォームを1つ作り、その中に以下のようなものを作りたいと思っています。

イメージはTableタグみたいなものでして、
列、行をそれぞれテーブルから呼んで動的に、配置し、
中身(■■■)はテキストボックスを配置して、入力をさせたい。


   |A1  |A2  |A3  |A4  |←動的(列):ラベル
------+------+------+------+------+
あ  |■■■|■■■|■■■|■■■|
------+------+------+------+------+
い  |■■■|■■■|■■■|■■■|
------+------+------+------+------+
う  |■■■|■■■|■■■|■■■|
------+------+------+------+------+
え  |■■■|■■■|■■■|■■■|※■■■はTextBox(パーツ)
------+------+------+------+------+

動的(行):ラベル

RepeaterとかGridviewとか通常の使い方はわかるのですが、
行も列も動的というのは、やり方がわからないので、

こんな書き方をすれば実現できるよ とかありませんでしょうか?
Katze
ベテラン
会議室デビュー日: 2005/11/01
投稿数: 74
お住まい・勤務地: 1台でも せんだい
投稿日時: 2007-02-22 13:31
動的にテーブルを作成する方法として参考になれば...

webフォーム上にテーブルコントロールを貼り付けて、IDを tblList として
以下のようなコードを実行

コード:
        Dim wRow As TableRow
        Dim wCell As TableCell
        Dim wCtrlText As TextBox
        Dim intRow As Integer
        Dim intCell As Integer
        Dim strText As String
        Dim aryTitle As String() = {" ", "A1", "A2", "A3", "A4"}

        ' ヘッダー
        wRow = New TableRow
        For Each strText In aryTitle
            wCell = New TableCell
            wCell.Width = wCell.Width.Pixel(50)
            wCell.BorderStyle = BorderStyle.Solid
            wCell.Text = strText
            wCell.HorizontalAlign = HorizontalAlign.Center
            wRow.Cells.Add(wCell)
        Next
        tblList.Rows.Add(wRow)

        ' 明細
        For intRow = 1 To 3

            wRow = New TableRow

            ' 列タイトル
            wCell = New TableCell
            wCell.Text = "あ" & intRow.ToString
            wCell.BorderStyle = BorderStyle.Solid
            wCell.HorizontalAlign = HorizontalAlign.Center
            wRow.Cells.Add(wCell)

            For intCell = 1 To 4

                ' 列項目
                wCell = New TableCell
                wCtrlText = New TextBox
                wCtrlText.ID = "txt" & intRow.ToString & "_" & intCell.ToString
                wCtrlText.Width = wCtrlText.Width.Pixel(42)
                wCell.BorderStyle = BorderStyle.Solid
                wCell.Controls.Add(wCtrlText)
                wRow.Cells.Add(wCell)

            Next

            ' 行の追加
            tblList.Rows.Add(wRow)

        Next



※ VS2003 VB.NETで確認

とりあえず作成できます。
列数、行数、ヘッダーのタイトル、列のタイトルとかは
適宜変更してください。
しょくぱん
常連さん
会議室デビュー日: 2006/05/31
投稿数: 31
投稿日時: 2007-02-22 13:33
私はVS2003で開発してますが、
私だったらDataGridを使用して
列はテンプレートカラムを100くらい用意しておいて必要な分だけvisible=trueにし、
行に関しては必要な行数分のDataTableなどをバインドすると思います。
(列数がべらぼうに多くならないと想定できる場合のみですが)
KM
会議室デビュー日: 2007/02/14
投稿数: 15
投稿日時: 2007-02-22 15:23
Katze様、しょくぱん様

返答ありがとうございます!

さっそく、Katze様のコード参考にしながら、
作ってみました所、みごとなまでにできました!!!

すごい回答に思わず、ため息がでました。

色々な意味で勉強になりました。ありがとうございました!!
1

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