Note that there are some explanatory texts on larger screens.

plurals
  1. PODynamically created button requires 2 clicks to return view state
    primarykey
    data
    text
    <p>I'm trying to create a page dynamically, but I falling at the first herdle. I have create the below after reading may blogs/post/articles. The problem I have is when I click the first buttons I created nothing happend, if I then click it again it works.</p> <p>Can any one tell me where I'm going wrong?</p> <p>Thanks</p> <p>ASP Page:</p> <pre><code>&lt;%@ Page Title="Create / Amend Quotes" Language="vb" AutoEventWireup="false" CodeBehind="Quote.aspx.vb" Inherits="BIS.Quote" %&gt; &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt; &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;head id="Head1" runat="server"&gt; &lt;title&gt;&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;form id="form1" runat="server"&gt; &lt;div&gt; &lt;asp:PlaceHolder ID="PlaceHolder1" runat="server"&gt;&lt;/asp:PlaceHolder&gt; &lt;/div&gt; &lt;/form&gt; &lt;/body&gt; &lt;/html&gt; </code></pre> <p>VB</p> <pre><code>Imports System.Data Imports System.Data.SqlClient Public Class Quote Inherits System.Web.UI.Page Const CREATE_SELECTION As String = "create" Const AMEND_SELECTION As String = "amend" Const VIEWSTATEKEY_DYNCONTROL As String = "VS_Controls" Protected Property VS_Controls() As String Get Dim result As String = ViewState.Item(VIEWSTATEKEY_DYNCONTROL) If result Is Nothing Then Return String.Empty Else Return result End If End Get Set(ByVal value As String) ViewState.Item(VIEWSTATEKEY_DYNCONTROL) = value End Set End Property Private Sub Quote_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init PlaceHolder1.Controls.Clear() End Sub Private Sub Quote_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Select Case Me.VS_Controls Case CREATE_SELECTION Dim Lab As New Label Lab.ID = "Tester" Lab.Text = "Create" Me.PlaceHolder1.Controls.Add(Lab) Case AMEND_SELECTION Dim Lab As New Label Lab.ID = "Tester_2" Lab.Text = "Amend" Me.PlaceHolder1.Controls.Add(Lab) Case Else Dim btn_create As New Button Dim btn_Amend As New Button Dim Label1 As New Label btn_create.ID = "but_Create" btn_create.Text = "Create" btn_create.CommandName = "Create" AddHandler btn_create.Click, AddressOf onClick btn_Amend.ID = "but_Amend" btn_Amend.Text = "Amend" btn_Amend.CommandName = "Amend" AddHandler btn_Amend.Click, AddressOf onClick Label1.id = "lab1" Label1.Text = VS_Controls Me.PlaceHolder1.Controls.Add(btn_create) Me.PlaceHolder1.Controls.Add(New LiteralControl(" ")) 'space them out Me.PlaceHolder1.Controls.Add(btn_Amend) Me.PlaceHolder1.Controls.Add(New LiteralControl(" ")) 'space them out Me.PlaceHolder1.Controls.Add(Label1) End Select End Sub Private Sub onClick(ByVal sender As Object, ByVal e As EventArgs) Dim From As Button = DirectCast(sender, Button) Dim But_String As String = From.ID If But_String = "but_Create" Then Me.VS_Controls = CREATE_SELECTION ' Me.VS_Controls = "create" ' ViewState("create_amend") = "create" ElseIf But_String = "but_Amend" Then Me.VS_Controls = AMEND_SELECTION 'ViewState("create_amend") = "amend" End If End Sub Private Sub Quote_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender End Sub End Class </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload