ユーザーがページのボタンをクリックすると作成される一連のコントロール (3 つのラベル、3 つのテキスト ボックス、および 2 つのボタン) があります。ページは、これらのコントロールを生成するコマンドでポストバックを行います。しかし、テキスト ボックスに入力して、新しく生成されたボタン ( btnCreate
) の 1 つをクリックしても、何も起こらず、ページがもう一度リロードされます。
私がやりたいことは、ユーザーが をクリックするbtnCreate
と、その関数が起動TextBox.Text
され、データベースに入れられることです。しかし、ここでも、btnCreate
をクリックしても何も起こりません。
生成されたボタンのコードは次のとおりです (ここでは除外したテキスト ボックスを生成するのと同じ関数です)。
Protected Sub createSpecialNotes()
Dim btnCreate As Button = New Button
Dim btnClear As Button = New Button
'Place properties
lblSubject.Text = "subject"
lblSubject.ID = "lblSubject"
lblSubject.Width = 700
lblAgenda.Text = "Agenda Note"
lblAgenda.ID = "lblAgenda"
lblAgenda.Width = 700
lblMinutes.Text = "Minutes Note"
lblMinutes.ID = "lblMinutes"
lblMinutes.Width = 700
btnCreate.Text = "Create"
btnCreate.ID = "btnCreate"
btnClear.Text = "Clear"
btnClear.ID = "btnClear"
'Add handlers for buttons
AddHandler btnCreate.Click, AddressOf btnCreate_Click
AddHandler btnClear.Click, AddressOf btnClear_Click
plhCreateSpecialNotes.Controls.Add(btnCreate)
plhCreateSpecialNotes.Controls.Add(btnClear)
End Sub
btnCreate
簡単にするために、テキストボックスの内容を表示するだけでよいとしましょう。
Edit1: create special notes の呼び出しは page_preInit にあります。その呼び出しは次のもので構成されています
Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit
'Find the control that was fired
Dim controlFired As Control = GetPostBackControl(Me.Page)
If (controlFired IsNot Nothing) Then
If (controlFired.ClientID.ToString() = "btnCreateSpecial") Then
Call createSpecialNotes()
End If
If (controlFired.ClientID.ToString() = "btnCreate") Then
'i've tried putting things here to no avail.
End If
End If
End Sub
関数 getpostbackcontrol は次のようになります
Public Shared Function GetPostBackControl(ByVal thePage As Page) As Control
Dim myControl As Control = Nothing
Dim ctrlName As String = thePage.Request.Params.Get("__EVENTTARGET")
If ((ctrlName IsNot Nothing) And (ctrlName <> String.Empty)) Then
myControl = thePage.FindControl(ctrlName)
Else
For Each Item As String In thePage.Request.Form
Dim c As Control = thePage.FindControl(Item)
If (TypeOf (c) Is System.Web.UI.WebControls.Button) Then
myControl = c
End If
Next
End If
Return myControl
End Function
これが、私が問題を抱えている理由を明確にするのに役立つことを願っています.