Noob -- BC30002: Type 'Table' is not defined.

C

CJM

I'm finally taking my first few steps with ASP.NET, and I'm just workign my
way through some of the basics.

As a vehicle for my learning, I'm re-writing a simple report page for on of
my ASP applications.

I have two tables on this page. One is where the user requests a report for
a given ID number, the second is the table of result. Obviously I dont want
to show the results table until the query has been submitted, so I'm trying
to hide the table until IsPostBack = True.

As I understand it, I must declare the page controls, e.g. my tables, before
I can manipulate them in the CodeBehind page. I've done this but clearly I
am missing something because I am getting this error: BC30002: Type 'Table'
is not defined.

Thanks in advance

Chris

Code Snippets:

viewta.2aspx.vb:
Public Class viewta2
Inherits System.Web.UI.Page

Protected WithEvents tblResults As Table
Protected WithEvents tblRequest As Table


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

If IsPostBack Then
'Hide Search button
tblResults.Visible = True
tblRequest.Visible = False
Else
'Hide(results)
tblResults.Visible = False
tblRequest.Visible = True
End If

End Sub

End Class


viewta2.aspx:
<%@ Page Inherits="viewta2" src="viewta2.aspx.vb" %>
<script runat="server">

Sub Page_Load
If Not IsPostBack Then
lblTANumber.visible=false
End If
End Sub

</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title>viewta2</title>
<meta name=vs_defaultClientScript content="JavaScript">
<meta name=vs_targetSchema
content="http://schemas.microsoft.com/intellisense/ie5">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" href="TADB.css" type="text/css">
</head>
<body MS_POSITIONING="GridLayout">

<form id="frmReport" method="post" runat="server">
<table id="tblRequest" class="tbl centered" cellspacing="0"
runat="server">
<tr>
<th colspan="2">View TA Details</th>
</tr>
<tr>
<td>TA Number:</td>
<td><asp:TextBox ID="txtTANumber" MaxLength="10" Runat="server"/></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><asp:Button ID="cmdSearch" Text="Search" Runat="server"/></td>
</tr>
</table>
<table id="tblResults" class="tbl centered" cellspacing="0"
runat="server">
<tr>
<th>TA Number:</th>
<th><asp:Label ID="lblTANumber" Width="10" Runat="server"/></th>
</tr>
<tr>
<td>PO Number:</td>
<td><asp:Label ID="lblPONumber" Runat="server"/></td>
</tr>
<tr>
<td>PO Line:</td>
<td><asp:Label ID="lblPOLine" Runat="server"/></td>
</tr>
<tr>
<td>Part No:</td>
<td><asp:Label ID="lblPartNo" Runat="server"/></td>
</tr>
<tr>
<td>Part XRef:</td>
<td><asp:Label ID="lblPartXRef" Runat="server"/></td>
</tr>
<tr>
<td>Description:</td>
<td><asp:Label ID="lblDescText" Runat="server"/></td>
</tr>
<tr>
<td>Quantity Rec'd:</td>
<td><asp:Label ID="lblQuantityRecd" Runat="server"/></td>
</tr>
<tr>
<td>Advice Note:</td>
<td><asp:Label ID="lblAdviceNote" Runat="server"/></td>
</tr>
<tr>
<td>Supplier ID:</td>
<td><asp:Label ID="lblSuppierID" Runat="server"/></td>
</tr>
<tr>
<td>Cert/Cast No:</td>
<td><asp:Label ID="lblCastNo" Runat="server"/></td>
</tr>
<tr>
<td>Date Rec'd:</td>
<td><asp:Label ID="lblDateRecd" Runat="server"/></td>
</tr>
</table>
</form>

</body>
</html>
 
T

Toby Mathews

You haven't given it enough information about the class you're creating an
instance of. Try something like:

Protected WithEvents tblResults As System.Web.UI.WebControls.Table

Toby Mathews
 
T

Toby Mathews

PS Syntax may not be exact, I'm a C# person!

Toby Mathews said:
You haven't given it enough information about the class you're creating an
instance of. Try something like:

Protected WithEvents tblResults As System.Web.UI.WebControls.Table

Toby Mathews
 
C

CJM

Toby,

Seem you were on the right lines...

I'm working from example in "ASP Unleashed" where "Protected WithEvents
lblMessage as Label" was used... I wonder is their code wrong or are they
using some shortcut method?

Anyway, at first I changed to System.Web.UI.WebControls.Table... but this
meant I had to change all my <table>, <tr>, <th> and <td> tags needed to be
changed!

So I've opted for System.Web.UI.HtmlControls.HtmlTable - I know I'm missing
out on functionality, but I can't imagine I'm missing that much!

Cheers

Chris

[Addendum: I noticed that I can add Imports directives (eg Imports
System.Web.UI.HtmlControls) to allow shortcut declarations (eg. Protected
WithEvents tblResults As HtmlTable)]
 
T

Toby Mathews

Chris,

Yes, you can use Inherits to get the class to inherit everything from
another class like this:

Inherits System.Web.UI.WebControls

like the line:

Inherits System.Web.UI.Page

you already have in your code (this inherits all the methods, classes etc of
the Page class, making them available from within your code without having
to type out everything from System up each time).

Hope this helps,

Toby

CJM said:
Toby,

Seem you were on the right lines...

I'm working from example in "ASP Unleashed" where "Protected WithEvents
lblMessage as Label" was used... I wonder is their code wrong or are they
using some shortcut method?

Anyway, at first I changed to System.Web.UI.WebControls.Table... but this
meant I had to change all my <table>, <tr>, <th> and <td> tags needed to be
changed!

So I've opted for System.Web.UI.HtmlControls.HtmlTable - I know I'm missing
out on functionality, but I can't imagine I'm missing that much!

Cheers

Chris

[Addendum: I noticed that I can add Imports directives (eg Imports
System.Web.UI.HtmlControls) to allow shortcut declarations (eg. Protected
WithEvents tblResults As HtmlTable)]


Toby Mathews said:
You haven't given it enough information about the class you're creating an
instance of. Try something like:

Protected WithEvents tblResults As System.Web.UI.WebControls.Table

Toby Mathews
 
S

Steven Cheng[MSFT]

HI Chris,

Since the ASP.NET has two set of controls Html SErver controls and
WEbserver controls, it's better that we declare a control as its full name.
And generally, if you don't need to create control from the html template
such as
<table runat=server> ...

Here are the related document in msdn:
You can just use the WebControls since that also provide better
encapsulation and flexibility.
#Introduction to ASP.NET Server Controls
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/
vbconintroductiontowebformscontrols.asp

#HTML Server Controls
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/ht
ml/cpconASPSyntaxForHTMLControls.asp

Hope also helps. thanks.

Regards,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)

Get Preview at ASP.NET whidbey
http://msdn.microsoft.com/asp.net/whidbey/default.aspx
 
C

CJM

I thought I'd reade somewhere that certain classes were automatically
inherited, but it appears not.

But it working fine now... well I'm on to my next problem actually, but I
can successfully manipulate the page controls from the form-behind page now,
thanks.

I would say, that for simple pages, there seem to be an awful lot of work to
do in comparison with ASP/PHP. I know that ultimately .NET is more powerful,
but for the simple stuff, there seems to be a lot of work to do...
Importing, inheriting, declaring form controls etc, etc...

Thanks anyway

Chris
 
S

Steven Cheng[MSFT]

Hi Chris,


Thanks for the followup. As for the ASP.NET web page, if the page is not
very complex, we can just use a aspx page which has functions inline rather
than provide a codebehind model. Here are some reference on this:

#Should I use Code-behind or Code-Inside (or Code-beside)?
http://msdn.microsoft.com/asp.net/community/inbox/codebeside/default.aspx

#Web Forms Code Model
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/
vbconwebformscodemodel.asp

Thanks.

Regards,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)

Get Preview at ASP.NET whidbey
http://msdn.microsoft.com/asp.net/whidbey/default.aspx
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top