2

データセットのデータを使用して、入力チェックボックスの種類とasp テキストボックスを ASP テーブルセルに動的に追加しようとしています。これについての投稿はほとんど読んだことがありませんが、到達したい組み合わせはありません。

これは私が使用しているコードです ( dsはデータセット、tblMeasuredCharは Asp テーブルです):

   If ds.Tables(0).Rows.Count > 0 Then

        For Each dr As DataRow In ds.Tables(0).Rows
            Dim tr As New TableRow()

            'defining input
            Dim tc As New TableCell()
            tc.Text = "<input type=" & Chr(34) & "checkbox" & Chr(34) & " name=" & Chr(34) & "chkMeasuredChars" & Chr(34) & " value=" & Chr(34) & dr("id") & Chr(34) & "/>" & dr("description")

            'defining unique textbox
            Dim txtbx As New TextBox()
            txtbx.ID = "tbMeasuredChars" & dr("id")
            'add it to the cell
            tc.Controls.Add(txtbx)

            'add the cell to the row
            tr.Controls.Add(tc)

            tblMeasuredChar.Rows.Add(tr)
        Next
    End If

問題は、TableRow に追加した最後の「もの」だけが表示されることです。このタイプの入力を使用する必要があります。asp チェックボックスを使用することはできません。既に他のテキストを持っている TableCell にユーザー コントロールを追加することは可能ですか?

私はすでにtr.Cells.Add(tc)のような TableCellと他のいくつかの組み合わせを追加しようとしましたが、結果は同じです。セルにコントロールを追加すると、チェックボックス (および事前に定義されたものすべて) が消えます。

皆さん、ありがとうございました。

4

1 に答える 1

1

プロパティを使用するのではなく、Literalコントロールを使用する必要があり.Textます。このような:

If ds.Tables(0).Rows.Count > 0 Then

    For Each dr As DataRow In ds.Tables(0).Rows
        Dim tr As New TableRow()

        'defining input
        Dim tc As New TableCell()
        tc.Controls.Add(New LiteralControl("<input type=" & Chr(34) & "checkbox" & Chr(34) & " name=" & Chr(34) & "chkMeasuredChars" & Chr(34) & " value=" & Chr(34) & dr("id") & Chr(34) & "/>" & dr("description")))

        'defining unique textbox
        Dim txtbx As New TextBox()
        txtbx.ID = "tbMeasuredChars" & dr("id")
        'add it to the cell
        tc.Controls.Add(txtbx)

        'add the cell to the row
        tr.Controls.Add(tc)

        tblMeasuredChar.Rows.Add(tr)
    Next
End If

これは、通常のASP.NET servコントロールとは異なり、基本的には静的なHTMLテキストであるため、ニーズをうまく満たすように思われます。上記のリンク先のドキュメントから:

ASP.NETは、サーバー側の処理を必要としないすべてのHTML要素と読み取り可能なテキストをこのクラスのインスタンスにコンパイルします。たとえば、開始タグにrunat = "server"属性/値のペアが含まれていないHTML要素は、LiteralControlオブジェクトにコンパイルされます。

したがって、テキストは基本的にすでにリテラルコントロールにコンパイルされています。.Textこれにより、プロパティと.Controlsコレクションの両方を使用して、発生している表示の問題を解決できると思います。

于 2013-03-04T19:38:03.293 に答える