データベースからの情報に基づいて質問と回答のページを作成する、わずかに動的なページを開発しました。オブジェクトの送信者と選択したListItem情報を検証するためのマイナーなMsgBox応答でRadioButtonListイベントをトリガーできないことを除いて、すべてがうまく機能します。
Page_Load
If Not Page.IsPostBack Then
With Globals.tst
.GetBrandInformation(Page.RouteData.Values("brand"),
Page.RouteData.Values("year"),
Page.RouteData.Values("month"))
'Load up Question DataSet
For Each quest As Question In .Questions
Dim tr As New HtmlControls.HtmlTableRow
Dim td As New HtmlControls.HtmlTableCell
td.Attributes.Add("class", "tdQ") 'Add class attribute to <td> element, creating 'class="tdQ"'
Dim lbl As New Label
lbl.ID = "lbl" & quest.ID
lbl.Text = quest.Text
td.Controls.Add(lbl)
tr.Cells.Add(td)
tblContent.Rows.Add(tr)
tr = New HtmlControls.HtmlTableRow
td = New HtmlControls.HtmlTableCell
td.Attributes.Add("class", "tdA") 'Add class attribute to <td> element, creating 'class="tdA"'
Dim rbl As New RadioButtonList
rbl.ID = "rblT" & .ID & "_Q" & quest.ID
AddHandler rbl.SelectedIndexChanged, AddressOf rbl_SelectedIndexChanged 'Attach generic event handler to control
Dim li As New ListItem
'Load up Answer Dataset
For Each answ As Answer In quest.Answers
li.Text = answ.Value
li.Value = "T" & .ID & "-Q" & quest.ID & "-A" & answ.ID & "-C" & answ.Correct
'Add built ListItem to RadioButtonList
rbl.Items.Add(li)
li = New ListItem
Next
td.Controls.Add(rbl)
tr.Cells.Add(td)
tblContent.Rows.Add(tr)
Next
End With
'
End If
以下は、RadioButtonListにアタッチしようとしている汎用イベントハンドラロジックです。
Protected Sub rbl_SelectedIndexChanged(sender As Object, e As EventArgs)
MsgBox(CType(sender, RadioButtonList).ID & " Clicked.")
MsgBox("Radio Button Selected: " & CType(sender, RadioButtonList).ID & " is Correct? " & CType(sender, RadioButtonList).SelectedValue)
End Sub
誰かがデザインに何か問題があるのを見たり、イベントがトリガーされない理由を知っていますか?
2012年11月20日編集
OKはrbl
オブジェクトを変更しましAutoPostBack = true
たが、それは人生をさらに耐え難いものにしました;)その後、私が持っているQ&Aリストが質問と回答でランダムに生成されるのですぐに元に戻り、エンドユーザーはクリックするたびに新しいランダムな質問の順序が与えられますListItemの。
コールバックから応答が返されますが、JavaScript応答が返されませんが、定義されたJavaScriptファイルまたはインラインResponse.Write
/のいずれかを使用して期待していますClientScript.Register
。
コンテンツページにデバッグメソッドを作成しました。
Public Shared Sub Show(msg As String, Optional pg As Page = Nothing)
Dim cmsg As String = msg.Replace("'", "\'")
Dim scr As String = "<script type=""text/javascript"">alert('" & cmsg & "');</script>"
If pg Is Nothing Then
pg = CType(HttpContext.Current.CurrentHandler, Page)
End If
If (pg IsNot Nothing) And Not (pg.ClientScript.IsClientScriptBlockRegistered("alert")) Then
pg.ClientScript.RegisterClientScriptBlock(GetType(Alert), "alert", scr)
End If
End Sub
ページのLoadで、このメソッドは期待どおりに起動しますが、SelectedIndexChangedイベント内に配置すると、起動しません。
一般的な実行では機能するが、実行がトリガーされない理由にはまだ戸惑っています。
Javascriptを実装する.Netメソッドを作成したい人のための便利なメソッド。.Net Slave-Javascript Alert.Show Class