ASP.Net Buttons Wont Work

liunx

Guest
I am doing a login page and dropped a few web form button. When i run it in the debugger and click the button. it doesnt go into the button click sub, but instead shows a blank page. Any Ideas Much AppreciatedHow about posting some code to look at.also I wrote an article about a simple asp.net login system some time ago that might be helpful to you (needs to be modified to prevent sql injection though).The Generated HTML for the code is

<%@ Control Language="vb" AutoEventWireup="false" Codebehind="ctrlLogin.ascx.vb" Inherits="SellYour_House.ctrlLogin" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<DIV style="WIDTH: 578px; POSITION: relative; HEIGHT: 288px" ms_positioning="GridLayout">
<asp:textbox id="txtUser" style="Z-INDEX: 101; LEFT: 144px; POSITION: absolute; TOP: 88px" Width="176px" runat="server">
</asp:textbox>
<asp:textbox id="txtPassword" style="Z-INDEX: 102; LEFT: 144px; POSITION: absolute; TOP: 152px"
Width="176px" runat="server" TextMode="Password">
</asp:textbox>
<asp:button id="btnHint" style="Z-INDEX: 103; LEFT: 488px; POSITION: absolute; TOP: 32px" Width="64px"
runat="server" BorderStyle="Groove" BackColor="#FF8000" BorderColor="#FF8000" ForeColor="Black" Font-Names="Arial" Font-Bold="True" Text="Hint"></asp:button>
<asp:button id="btnLogon" style="Z-INDEX: 104; LEFT: 488px; POSITION: absolute; TOP: 88px" Width="64px"
runat="server" BorderStyle="Groove" BackColor="#FF8000" BorderColor="#FF8000" ForeColor="Black" Font-Names="Arial" Font-Bold="True" Text="Logon"></asp:button>
<asp:button id="btnClear" style="Z-INDEX: 105; LEFT: 488px; POSITION: absolute; TOP: 144px"
Width="64px" runat="server" BorderStyle="Groove" BackColor="#FF8000" BorderColor="#FF8000" Font-Names="Arial" Font-Bold="True" Text="Clear"></asp:button>
<asp:label id="lblHint" style="Z-INDEX: 106; LEFT: 48px; POSITION: absolute; TOP: 40px" runat="server"
Font-Names="Arial" Font-Bold="True">Hint</asp:label>
<asp:label id="lblHintShow" style="Z-INDEX: 107; LEFT: 144px; POSITION: absolute; TOP: 40px"
Width="304px" runat="server" ForeColor="#FF8000" Font-Names="Arial"></asp:label>
<asp:label id="lblPass" style="Z-INDEX: 108; LEFT: 48px; POSITION: absolute; TOP: 152px" runat="server"
Font-Names="Arial" Font-Bold="True">Password:</asp:label>
<asp:label id="lblUsername" style="Z-INDEX: 109; LEFT: 48px; POSITION: absolute; TOP: 88px"
runat="server" Font-Names="Arial" Font-Bold="True">User Name:</asp:label>
<asp:label id="lblError" style="Z-INDEX: 110; LEFT: 72px; POSITION: absolute; TOP: 240px" Width="304px"
runat="server" ForeColor="#FF8000" Font-Names="Arial"></asp:label></DIV>

The Code Behind will look like this

Public Class ctrlLogin
Inherits System.Web.UI.UserControl

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.thisConn = New System.Data.OleDb.OleDbConnection
'
'thisConn
'
Me.thisConn.ConnectionString = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database L" & _
"ocking Mode=1;Data Source=""C:\Blue Fin\SellYourHouse\SellYourHouse.mdb"";Mode=Sha" & _
"re Deny None;Jet OLEDB:Engine Type=5;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLED" & _
"B:System database=;Jet OLEDB:SFP=False;persist security info=False;Extended Prop" & _
"erties=;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:Encrypt Databas" & _
"e=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Co" & _
"mpact=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1"

End Sub
Protected WithEvents txtUser As System.Web.UI.WebControls.TextBox
Protected WithEvents txtPassword As System.Web.UI.WebControls.TextBox
Protected WithEvents btnLogon As System.Web.UI.WebControls.Button
Protected WithEvents lblHint As System.Web.UI.WebControls.Label
Protected WithEvents lblHintShow As System.Web.UI.WebControls.Label
Protected WithEvents lblUsername As System.Web.UI.WebControls.Label
Protected WithEvents lblError As System.Web.UI.WebControls.Label
Protected WithEvents thisConn As System.Data.OleDb.OleDbConnection
Protected WithEvents thisCommand As System.Data.OleDb.OleDbCommand
Protected WithEvents btnHint As System.Web.UI.WebControls.Button
Protected WithEvents btnClear As System.Web.UI.WebControls.Button
Protected WithEvents lblPass As System.Web.UI.WebControls.Label

'NOTE: The following placeholder declaration is required by the Web Form Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
lblHint.Visible = False
lblHintShow.Visible = False
End Sub
Private Function ConnectToDatabase() As Boolean
Try

thisConn.Open()
Catch ex As Exception
lblError.Text = ex.Message
lblError.Visible = True
End Try
End Function

Private Function DisconnectFromDatabase() As Boolean
Try
thisConn.Close()
Catch ex As Exception
lblError.Text = ex.Message
lblError.Visible = True
End Try
End Function

Private Sub btnLogon_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogon.Click

'---Will Check Login Details
End Sub

Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click
lblHintShow.Text = ""
txtPassword.Text = ""
txtUser.Text = ""
lblHint.Text = ""
End Sub



End ClassAll of your code looks good, except for the inheritance. I'm almost certain that it is the problem. Try this and let us know how it does.

You have:

Inherits System.Web.UI.UserControl


It should be:

Inherits System.Web.UI.PageDid you change the name of the button, cut it, or move it...?
Try deleting the button, add a new button on the user control. Double click the button to go to the code behind page and create the new button_click event. Delete the old event. (Don't forget to copy your code in there first.) :-)

Add the user control a web form and test it. It should work.
Sometimes renaming a button, or something else disconnects it from its event handler.

Good Luck!CStick when i did what you suggested i got the following error

'SellYour_House.ctrlLogin' is not a valid base class because it does not extend class 'System.Web.UI.UserControl'.

dtch i put in a new button but no success. All the buttons dont work so there must be some other reason

they all just load an empty page

the address at the top still says the original .aspx addressjust stepped through code. when the button is pressed it goes to the page initialise that calls the user control and not the button press event.

Anyone know why

Its really bugging meTry this. In your html, add the commandname attribute with method like below.


<asp:button commandname="btnLogon_Click" id="btnLogon" style="Z-INDEX: 104; LEFT: 488px; POSITION: absolute; TOP: 88px" Width="64px"
runat="server" BorderStyle="Groove" BackColor="#FF8000" BorderColor="#FF8000" ForeColor="Black" Font-Names="Arial" Font-Bold="True" Text="Logon"></asp:button>


In your codebehind, change you click method to this. Make it public and remove handling.


Public Sub btnLogon_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
'---Will Check Login Details
End Sub


Let us know if that helped.i actually got it workin. i moved a piece of my code into the page_load which was peviously elesewhere and it fixed the problem

Cheers for all your help
 
Back
Top