If Statement to display Label or Button in aspx - asp.net

I am new to aspx so can someone help me with the following small bit of code. I am trying to create an If statment in aspx.net using Vb, but I can't get it to work correctly.
I am trying to ask a questions and the user has to select a yes checkbox or no checkbox and depending on the answer either a label will appear saying "Not permitted" or a button will appear to link to main form.
I am having problems making either the button or label appear when the user selects choice.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Main_FormBtn.Visible = False
Refer_Label.Visible = False
If CheckBoxNo.Checked = True Then
Refer_Label.Visible = True
ElseIf CheckBoxYes.Checked = True Then
Main_FormBtn.Visible = True
End If
End Sub
Any help would be greatly appricated
thanks

If it is YES OR NO Category Better you use RadioButton Not Checkbox..
Try like below it will help you...
YESRadio_CheckedChanged EVENT
Main_FormBtn.Visible = True
Refer_Label.Visible = False
NORadio_CheckedChanged EVENT
Refer_Label.Visible = True
Main_FormBtn.Visible = False
PAGE_LOAD EVENT
Main_FormBtn.Visible = False
Refer_Label.Visible = False
Before that Set AutoPostBack="true" for RadioButtons

If this is meant to be a form where users go through and answer a number of questions and sub-options appear accordingly there's a number of issues you need to consider. If you want the boxes/labels to show hide when a user clicks something you might need to use javascript/jquery unless you do a postback, in which case you might need to consider that a user might already have selected a number of options/filled out some part of the form.
If you want to share the overall structure of the page it will be easier to give proper advice.

Well as this is on page load, why would you even need this IF statement here? I'm thinking that you actually want this statement within the Click event of the checkbox, not on the page load. This code will only run on the load, not the click.
Double click your ASP button and put this code within the event handler there. Point both of the two checkbox click events to the same method like so;
Page load - You only want to set these to false on the first load.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Main_FormBtn.Visible = False
Refer_Label.Visible = False
End If
End Sub
Click event
Private Sub Checkbox_Click(sender As System.Object, e As System.EventArgs) Handles CheckBoxNo.Click, CheckBoxYes.Click
Main_FormBtn.Visible = False
Refer_Label.Visible = False
If CheckBoxNo.Checked = True Then
Refer_Label.Visible = True
ElseIf CheckBoxYes.Checked = True Then
Main_FormBtn.Visible = True
End If
End Sub
For this to work, it will require a postback. Unless you fancy going into Javascript land.

Related

Hide And Show Button in Visual Basic

Greet, I new with Visual Basic and I wan't to ask something. Is it possible to make hide and show button with only one button. For example, this 'X' button could show or hide this 'A' button without using another button to show and to hide button? I already learn to do this using Checked property as a toggle only like this coding.
If mnuViewTextboxes.Checked = True Then
TextBox1.Visible = True
Else
TextBox1.Visible = False
End If
add timer to your form and do something like
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If mnuViewTextboxes.Checked = True Then
TextBox1.Visible = True
ElseIf mnuViewTextboxes.Checked = false Then
TextBox1.Visible = False
End If
End Sub

Enabling/Disabling RequiredFieldValidator

I have 2 combo box drop downs. On page load the 2nd drop down with validator are disabled. If the user selects any value from the first drop down I enable it. The 2nd drop down enables but the validator does not.
page load
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
ComBox_GER2.Enabled = False
Valid_GER2.Enabled = False
End Sub
Is fired ComBox_GER1.SelectedIndexChanged
If ComBox_GER1.SelectedIndex = -1 Then
Else
ComBox_GER2.Enabled = True
Valid_GER2.Enabled = True
End If
in every Page_Load add
AjaxManager.AjaxSettings.AddAjaxSetting(ComBox_GER1,ComBox_GER2)
AjaxManager.AjaxSettings.AddAjaxSetting(ComBox_GER1,Valid_GER2)
This should work.
Use ValidatorEnable(ValidatorControlName,Boolean) javascript function
//Example:
ValidatorEnable(document.getElementById('<%= Valid_GER2.ClientID %>'), true);

session variable set by checkbox not being stored/shared from page to page

I have a listview that's showing a long list. Each item has the ability to be 'hidden' or not. I want a checkbox to either show all the list, or not to show the hidden ones. The idea is that users will hide the older items they don't want to see any more, but may want to see at some point. I want to store the value of this decision in a session variable so if the user navigates to another page, then comes back, the ShowAllCheckbox will pre-populate to what the user has previously decided. Everything is working good, except i can't get the session variable to keep. It keeps going back to False. This is what I have:
aspx page:
Show Hidden: <asp:Checkbox ID="ShowHiddenCheckbox" runat="server" AutoPostBack="True" OnCheckedChanged="ShowHiddenCheckboxChange" />
...
<asp:ListView ...>
<!-- this list works fine, and pulls the correct records -->
aspx.vb page:
Protected Sub ShowHiddenCheckBoxChange(ByVal sender As Object, ByVal e As EventArgs)
' toggle the values
Dim CheckBoxField As CheckBox = TryCast(sender, CheckBox)
If CheckBoxField.Checked Then
Session("ShowHiddenRotations") = False
Else
Session("ShowHiddenRotations") = True
End If
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'if i navigate to another page, and come back to this one, this comes back as "False". I don't understand how it could be reset to False.
Response.Write( "Session: " & Session("ShowHiddenRotations") )
'when page loads check if session variable has been set to show/hide the hidden rotations
If Session("ShowHiddenRotations") Then
If Session("ShowHiddenRotations") = True Then
'update sql query on select statement to show the hidden rotations
'update checkbox to show it as checked
ShowHiddenCheckBox.Checked = True
Else
ShowHiddenCheckBox.Checked = False
End If
Else
'not checked by default (ie don't show hidden)
ShowHiddenCheckBox.Checked = False
End If
End Sub
The Session variable always reverts back to False when i navigate to another page and come back to this one. My understanding of session variables was that they would pass their values from one page to another until the user closes the browser. Maybe there's another way of doing this, or something simple I'm missing. Any help is much appreciated! Thanks!
Is session-state enabled on your site? It can be disabled in a couple of different way, on a page level or even in web.config.
You should also be aware the Page_Load event fires for every request, before the check-box auto-postback happens.
I'm also a little confused as to what you're trying to store: I assume every row has a check-box, but it seems you're trying to store the set/not-set value in a single session variable. How do you differentiate which have been selected, and which ones hasn't? :)
Update:
Okay, let's try a clean the code up a little bit. First create a property to access the session value:
Private Property ShowHiddenRotations As Boolean
Get
If Not Session("ShowHiddenRotations") Is Nothing Then
Return CType(Session("ShowHiddenRotations"), Boolean)
Else
Return False
End If
End Get
Set(value As Boolean)
Session("ShowHiddenRotations") = value
End Set
End Property
If you're using that value on other pages, I would recommend moving it to a seperate class.
Then we can reduce your other code to something closer to this:
Protected Sub ShowHiddenCheckBoxChange(ByVal sender As Object, ByVal e As EventArgs)
ShowHiddenRotations = ShowHiddenCheckbox.Checked
End Sub
And ...
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If not Page.IsPostBack
' Load your data, better stick it in a seperate sub...
ShowHiddenCheckBox.Checked = ShowHiddenRotations
else
' This section is executed BEFORE any control methods are run, i.e. ShowHiddenCheckBoxChange
end if
End Sub
I'm guessing your problem is really just the order of how things are called in your page. What happens when you debug through it?

VB - button click event not working properly

In my windows app i have a button which is only visible when a user selects a certain value on a DropDownList.
For some reason the button does not work when i click on it.
I've enabled the button on page load and it works, however when i choose the value on the Dropdownlist the button does not work.
Is there something im missing here? any feedback would be greatly appreciated. Thanks
Code:
Protected Sub DropDownList4_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles DropDownList4.SelectedIndexChanged
If DropDownList4.SelectedValue = "Yes" Then
btnInsert.Visible = True
Endif
End Sub
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnInsert.Click
Response.Redirect("Menu.aspx")
DropDownList4.SelectedValue = "Yes"
txtfirstName.Text = ""
txtSurname.Text = ""
txtJobTitle.Text = ""
txtCountry.Text = ""
txtWork.Text = ""
DropDownList7.SelectedValue = ""
End Sub
From what we can see from your provided code all you are doing is changing visibility. Are you disabling the button anywhere else? Also Check the properties of the button in the design view to ensure that you did not accidentally changed the Enabled property to "False". It has been a while since I have done any web applications but if you are programically changing the enabled value of the button, I would suggest adding an Enabled = True line to your selected index change subroutine:
If DropDownList4.SelectedValue = "Yes"
Then
btnInsert.Visible = True
btnInsert.Enabled = True
Endif
It has been a while for me so I can't remember if it is .Enabled or something else.
There is also the possibility that you have a Panel or some such over your button and that is preventing you from actually clicking on the button.
Also, put a break point on the first line of your button click event and make sure that you are not getting there as opposed to entering the code and it not running the way you expect.
Try SelectedItem.Value instead, like this
Protected Sub DropDownList4_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles DropDownList4.SelectedIndexChanged
If DropDownList4.SelectedItem.Value = "Yes" Then
btnInsert.Visible = True
Endif
End Sub

Grid View, ASP.NET

When pressed Once,i want to make the Grid view Button(Time In) invisible until the User press Time Out Button.
Once the user press the Time Out Button,Time in Button must be shown
Have you looked at NServiceBus? Here's an introduction to it. http://www.udidahan.com/2009/02/07/nservicebus-19/
Just use the .Visible property on the buttons. For example:
btnTimeOut.Visible = False 'This will hide it
btnTimeOut.Visible = True ' ... and this will show it
To implement your solution, I'm assuming you've got two separate event handlers for each of your buttons. What you'd want to do is something like this:
Sub btnTimeIn_Click(o as Object, e as EventArgs)
'Hide the button now it has been clicked
Me.btnTimeIn.Visible = False
'Do some other stuff, such as record the Time In here...
End Sub
And then:
Sub btnTimeOut_Click(o as Object, e as EventArgs)
'Show the TimeIn button again
Me.btnTimeIn.Visible = True
'Record the time out etc...
End Sub
You can use the Load or Init events of the form to initialise the state of the buttons, i.e:
If Not Page.IsPostBack
InitialiseButtons()
End If
Private Sub InitialiseButtons()
Me.btnTimeIn.Visible = True
Me.btnTimeOut.Visible = False
End Sub
The "If Not Page.IsPostBack" property will stop your form being accidentally reset when the user clicks on one of your buttons after the initial load.
Hope this helps, feel free to pop any questions back up here.
Cheers

Resources