1

私はasp.netを初めて使用します(クラシックaspで何年もプログラミングした後)。文字列に何かを追加するページを作成しようとしています。

私のコードは次のとおりです。

default.aspx

<body>
<form id="form1" runat="server">
<div>
<p><asp:textbox id="tb" runat="server"></asp:textbox></p>
<asp:Panel ID="tbPanel" runat="server"></asp:Panel>
</div>
</form>
</body>

背後にあるコード:

Partial Class demo_Default
Inherits System.Web.UI.Page


Public Property gesStr As String

Set(value As String)

ViewState("gesStr") = value

End Set

Get

Dim o As Object = ViewState("gesStr")

If o Is Nothing Then

Return ""

Else

Return o

End If

End Get

End Property


Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
Dim anzeigeStr As String = ""
If Page.IsPostBack Then
Else
gesStr = "1;"
End If
tb.Text = gesStr


Dim iButton As New Button
iButton.Text = "add"
iButton.CommandArgument = "1;"
AddHandler iButton.Click, AddressOf add
tbPanel.Controls.Add(iButton)


Me.anzeige()


End Sub


Private Sub add(ByVal sender As Object, ByVal e As EventArgs)
Dim myButton As Button = DirectCast(sender, Button)
Dim addString As String = myButton.CommandArgument
gesStr += addString
End Sub


Private Sub anzeige()
Dim gesArray As Array = Split(gesStr, ";")
For xLauf As Integer = 0 To UBound(gesArray) - 1
Dim anzLabel As New Label
anzLabel.Text = "<p>" & gesArray(xLauf) & "</p>"
tbPanel.Controls.Add(anzLabel)
Next




End Sub

End Class

問題:

ボタンを押すとが発生しますが、ボタンをもう一度押すpostBackまで追加の結果は表示されません。望ましい結果は、最初にボタンを押した後、サブがループ内に正しい配列を表示することです。

助けてくれてありがとう!

4

1 に答える 1

0

ボタンがクリックされるたびに、関数anzeige()を呼び出し、gesStr値をテキストボックスコントロールにバインドする必要があります。以下のコードを参照してください。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Page.IsPostBack Then
        Else
            gesStr = "1;"
        End If
        tb.Text = gesStr
        Dim iButton As New Button
        iButton.Text = "add"
        iButton.CommandArgument = "1;"
        iButton.CommandName = "1;"
        AddHandler iButton.Click, AddressOf add
        tbPanel.Controls.Add(iButton)

    End Sub

    Private Sub add(ByVal sender As Object, ByVal e As EventArgs)

        Dim myButton As Button = DirectCast(sender, Button)
        Dim addString As String = myButton.CommandArgument
        gesStr += addString

        anzeige()
    End Sub


    Private Sub anzeige()
        Dim gesArray As Array = Split(gesStr, ";")
        For xLauf As Integer = 0 To UBound(gesArray) - 1
            Dim anzLabel As New Label
            anzLabel.Text = "<p>" & gesArray(xLauf) & "</p>"
            tbPanel.Controls.Add(anzLabel)
        Next

        'Bind gesStr value to the textbox control
        tb.Text = gesStr

    End Sub
于 2012-07-17T05:33:51.560 に答える