Wrox Programmer Forums
Go Back   Wrox Programmer Forums > ASP.NET and ASP > ASP.NET 2.0 > ASP.NET 2.0 Professional
| Search | Today's Posts | Mark Forums Read
ASP.NET 2.0 Professional If you are an experienced ASP.NET programmer, this is the forum for your 2.0 questions. Please also see the Visual Web Developer 2005 forum.
Welcome to the p2p.wrox.com Forums.

You are currently viewing the ASP.NET 2.0 Professional section of the Wrox Programmer to Programmer discussions. This is a community of software programmers and website developers including Wrox book authors and readers. New member registration was closed in 2019. New posts were shut off and the site was archived into this static format as of October 1, 2020. If you require technical support for a Wrox book please contact http://hub.wiley.com
  #11 (permalink)  
Old January 9th, 2008, 03:31 PM
Registered User
 
Join Date: Jan 2008
Location: , , .
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
Default

Thanks, Imar. I get the sql query part. The part I can't figure out is how to embed the current record primary key id. How can I pass that through to the validator?

What I have now is:

In AddITGResources.ascx
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="This url is already in the database" ControlToValidate="txtLinkURL"></asp:CustomValidator>

In AddITGResources.ascx.vb
        Private Sub CustomValidator1_ServerValidate(ByVal _
           source As System.Object, ByVal args As _
           System.Web.UI.WebControls.ServerValidateEventArgs) _
           Handles CustomValidator1.ServerValidate

            Dim nameData As New System.Data.DataSet
            Dim connString As String = "Data Source=.\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Data base.mdf;"
            Dim dbConnection As New SqlConnection(connString) ' = New SqlClient.SqlConnection(dsn)
            Dim Query As String
            Query = "Select [LinkURL] FROM ITGArticles"
            Dim dbCommand As New SqlCommand(Query, dbConnection)
            Dim sqlDataAdapter As New SqlDataAdapter(dbCommand)
            sqlDataAdapter.Fill(nameData)

            Dim dv As New DataView
            dv = nameData.Tables(0).DefaultView
            Dim datarow As DataRowView
            Dim txtLinkURL As String
            args.IsValid = True ' Assume False
            ' Loop through table and compare each record against user's entry
            For Each datarow In dv
                ' Extract link from the current row
                txtLinkURL = datarow.Item("LinkURL").ToString()
                ' Compare link against user's entry
                If txtLinkURL = args.Value Then
                    args.IsValid = False
                    Exit For
                End If
            Next
        End Sub


Thanks for any further advice,
Rick

  #12 (permalink)  
Old January 9th, 2008, 04:30 PM
Imar's Avatar
Wrox Author
Points: 70,322, Level: 100
Points: 70,322, Level: 100 Points: 70,322, Level: 100 Points: 70,322, Level: 100
Activity: 0%
Activity: 0% Activity: 0% Activity: 0%
 
Join Date: Jun 2003
Location: Utrecht, Netherlands.
Posts: 17,089
Thanks: 80
Thanked 1,576 Times in 1,552 Posts
Default

Hard to tell as I don't know what your primary key is, and how you can access it in the page.

Can you explain a bit more about your setup?

Imar
---------------------------------------
Imar Spaanjaars
http://Imar.Spaanjaars.Com
Everyone is unique, except for me.
Author of ASP.NET 2.0 Instant Results and Beginning Dreamweaver MX / MX 2004
Want to be my colleague? Then check out this post.
  #13 (permalink)  
Old January 9th, 2008, 08:13 PM
Registered User
 
Join Date: Jan 2008
Location: , , .
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
Default

I'm not sure what info you want in terms of how the field is accessed. Again, I'm not a programmer. I'm a graphic designer and my employer has given me this project that is beyond my abilities, but that is a whole different story...

The primary key field is called ItemID.

This is the code for the page:


<%@ Control language="vb" Inherits="ModuleBuilder.Modules.ITGResources.AddIT GResources" CodeFile="AddITGResources.ascx.vb" AutoEventWireup="false" Explicit="True" %>
<%@ Register TagPrefix="dnn" TagName="Label" Src="~/controls/LabelControl.ascx" %>
<%@ Register Assembly="eWorld.UI, Version=2.0.5.2356, Culture=neutral, PublicKeyToken=24d65337282035f2" Namespace="eWorld.UI" TagPrefix="ew" %>


<asp:panel id="pnlForm" runat="server" HorizontalAlign="Left" CSSClass="Normal" Wrap="False"><br />
<dnn:label id="lblItemID" runat="server" controlname="lblItemID" suffix=":" Visible="False"></dnn:label><asp:TextBox ID="txtItemID" runat="server" Visible="False" Width="200px" CssClass="NormalTextBox" EnableViewState="False"></asp:TextBox>
<dnn:label id="lblPortalID" runat="server" controlname="lblPortalID" suffix=":" Visible="False"></dnn:label><asp:TextBox ID="txtPortalID" runat="server" Visible="False" Width="200px" CssClass="NormalTextBox" EnableViewState="False"></asp:TextBox>
<dnn:label id="lblModuleID" runat="server" controlname="lblModuleID" suffix=":" Visible="False"></dnn:label><asp:TextBox ID="txtModuleID" runat="server" Visible="False" Width="200px" CssClass="NormalTextBox" EnableViewState="False"></asp:TextBox>
<dnn:label id="lblUserID" runat="server" controlname="lblUserID" suffix=":" Visible="False"></dnn:label><asp:TextBox ID="txtUserID" runat="server" Visible="False" Width="200px" CssClass="NormalTextBox" EnableViewState="False"></asp:TextBox>
<dnn:label id="lblTitle" runat="server" controlname="lblTitle" suffix=":" Visible="True"></dnn:label><asp:TextBox ID="txtTitle" runat="server" Visible="True" MaxLength="1000" Rows="2" TextMode="MultiLine" Width="450px" CssClass="NormalTextBox" EnableViewState="False"></asp:TextBox><asp:RequiredFieldValidator ID="rfvalTitle" runat="server" ErrorMessage="Required!" ControlToValidate="txtTitle" Display="Dynamic" CssClass="Normal"></asp:RequiredFieldValidator><br /><br />
<dnn:label id="lblDescription" runat="server" controlname="lblDescription" suffix=":" Visible="True"></dnn:label><asp:TextBox ID="txtDescription" runat="server" Visible="True" MaxLength="4000" Rows="5" TextMode="MultiLine" Width="450px" CssClass="NormalTextBox" EnableViewState="False"></asp:TextBox><asp:RequiredFieldValidator ID="rfvalDescription" runat="server" ErrorMessage="Required!" ControlToValidate="txtDescription" Display="Dynamic" CssClass="Normal"></asp:RequiredFieldValidator><br /><br />
<dnn:label id="lblPubDate" runat="server" controlname="lblPubDate" suffix=":" Visible="True"></dnn:label><ew:CalendarPopup runat="server" ID="dtprPubDate" CssClass="NormalTextBox" Visible="True" Width="200px" EnableViewState="False"></ew:CalendarPopup><asp:RequiredFieldValidator ID="rfvalPubDate" runat="server" ErrorMessage="Required!" ControlToValidate="dtprPubDate" Display="Dynamic" CssClass="Normal"></asp:RequiredFieldValidator><br /><br />
<dnn:label id="lblPubTime" runat="server" controlname="lblPubTime" suffix=":" Visible="True"></dnn:label><ew:TimePicker ID="tmprPubTime" runat="server" Visible="True" CssClass="NormalTextBox" Width="200px" EnableViewState="False"></ew:TimePicker><asp:RequiredFieldValidator ID="rfvalPubTime" runat="server" ErrorMessage="Required!" ControlToValidate="tmprPubTime" Display="Dynamic" CssClass="Normal"></asp:RequiredFieldValidator><br /><br />
<dnn:label id="lblLinkURL" runat="server" controlname="lblLinkURL" suffix=":" Visible="True"></dnn:label><asp:TextBox ID="txtLinkURL" runat="server" Visible="True" MaxLength="1000" Rows="2" TextMode="MultiLine" Width="450px" CssClass="NormalTextBox" EnableViewState="False"></asp:TextBox><asp:RequiredFieldValidator ID="rfvalLinkURL" runat="server" ErrorMessage="Required!" ControlToValidate="txtLinkURL" Display="Dynamic" CssClass="Normal"></asp:RequiredFieldValidator><asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="This url is already in the database" ControlToValidate="txtLinkURL"></asp:CustomValidator><br /><br />
<dnn:label id="lblCategory" runat="server" controlname="lblCategory" suffix=":" Visible="True"></dnn:label><asp:DropDownList runat="server" ID="cmbCategory" Width="200px" CssClass="NormalTextBox" Visible="True" EnableViewState="True">

</asp:DropDownList><br /><br />
<dnn:label id="lblKeyWords" runat="server" controlname="lblKeyWords" suffix=":" Visible="True"></dnn:label><asp:TextBox ID="txtKeyWords" runat="server" Visible="True" MaxLength="1000" TextMode="SingleLine" Width="450px" CssClass="NormalTextBox" EnableViewState="False"></asp:TextBox><asp:RequiredFieldValidator ID="rfvalKeyWords" runat="server" ErrorMessage="Required!" ControlToValidate="txtKeyWords" Display="Dynamic" CssClass="Normal"></asp:RequiredFieldValidator><br /><br />
<dnn:label id="lblPubMonth" runat="server" controlname="lblPubMonth" suffix=":" Visible="True"></dnn:label><asp:DropDownList runat="server" ID="cmbPubMonth" Width="200px" CssClass="NormalTextBox" Visible="True" EnableViewState="True">
<asp:ListItem Value="1" Text="Jan"></asp:ListItem>
<asp:ListItem Value="2" Text="Feb"></asp:ListItem>
<asp:ListItem Value="3" Text="Mar"></asp:ListItem>
<asp:ListItem Value="4" Text="Apr"></asp:ListItem>
<asp:ListItem Value="5" Text="May"></asp:ListItem>
<asp:ListItem Value="6" Text="Jun"></asp:ListItem>
<asp:ListItem Value="7" Text="Jul"></asp:ListItem>
<asp:ListItem Value="8" Text="Aug"></asp:ListItem>
<asp:ListItem Value="9" Text="Sep"></asp:ListItem>
<asp:ListItem Value="10" Text="Oct"></asp:ListItem>
<asp:ListItem Value="11" Text="Nov"></asp:ListItem>
<asp:ListItem Value="12" Text="Dec"></asp:ListItem>

</asp:DropDownList><br /><br />
<dnn:label id="lblPubYear" runat="server" controlname="lblPubYear" suffix=":" Visible="True"></dnn:label><asp:TextBox ID="txtPubYear" runat="server" Visible="True" MaxLength="4" Width="200px" CssClass="NormalTextBox" EnableViewState="False"></asp:TextBox><asp:RequiredFieldValidator ID="rfvalPubYear" runat="server" ErrorMessage="Required!" ControlToValidate="txtPubYear" Display="Dynamic" CssClass="Normal"></asp:RequiredFieldValidator><br /><br />
<asp:Panel Visible="False" runat="server" ID="pnlControl" CssClass="Normal">
&nbsp; &nbsp;&nbsp;<asp:LinkButton ID='AddButton' runat='server' ToolTip='Add' CausesValidation='True'><img border=0 runat=server src='~/images/save.gif'> Add</asp:LinkButton>
&nbsp; &nbsp;&nbsp;<asp:LinkButton ID='UpdateButton' runat='server' ToolTip='Save Changes' CausesValidation='True'><img border=0 runat=server src='~/images/save.gif'> Save Changes</asp:LinkButton>
&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp;
<asp:LinkButton ID='DeleteButton' runat='server' ToolTip='Delete' CausesValidation='False'><img border=0 runat=server src='~/images/delete.gif'> Delete</asp:LinkButton>
&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp;&nbsp;
<asp:LinkButton ID='CancelButton' runat='server' ToolTip='Cancel' CausesValidation='False'><img border=0 runat=server src='~/images/cancel.gif'> Cancel</asp:LinkButton>
&nbsp; &nbsp;&nbsp;
</asp:Panel><BR><BR>
</asp:panel>

<asp:Label ID="lblMessage" runat="server" cssclass=Normal Visible=False>Select a ITGResources to get started</asp:Label>


And these are the stored procedures:

/** Create Stored Procedures **/

ALTER PROCEDURE dbo.[ITGResources_Update]
(
 @ItemID int, @PortalID int, @ModuleID int, @UserID int, @Title nvarchar (1000), @Description nvarchar (4000), @PubDate datetime, @LinkURL nvarchar (1000), @Category nvarchar (255), @KeyWords nvarchar (1000), @PubTime datetime, @PubMonth nvarchar (3), @PubYear nvarchar (4)
)
AS
UPDATE dbo.ITGArticles
SET [PortalID]=@PortalID, [UserID]=@UserID, [Title]=@Title, [Description]=@Description, [PubDate]=@PubDate, [LinkURL]=@LinkURL, [Category]=@Category, [KeyWords]=@KeyWords, [PubTime]=@PubTime, [PubMonth]=@PubMonth, [PubYear]=@PubYear
WHERE (ItemID = @ItemID)


ALTER PROCEDURE dbo.[ITGResources_Add]
(
 @PortalID int, @ModuleID int, @UserID int, @Title nvarchar (1000), @Description nvarchar (4000), @PubDate datetime, @LinkURL nvarchar (1000), @Category nvarchar (255), @KeyWords nvarchar (1000), @PubTime datetime, @PubMonth nvarchar (3), @PubYear nvarchar (4)
)
AS
INSERT INTO dbo.ITGArticles
( PortalID, ModuleID, UserID, Title, Description, PubDate, LinkURL, Category, KeyWords, PubTime, PubMonth, PubYear)
VALUES ( @PortalID, @ModuleID, @UserID, @Title, @Description, @PubDate, @LinkURL, @Category, @KeyWords, @PubTime, @PubMonth, @PubYear)


I have tried using a WHERE statement with the @ItemID, but it gives me the error that it is not declared, and when I declare it inside the function it gives an error there, too. I really just need to pass the current records ItemID into the Private Sub CustomValidator1_ServerValidate, but I am not finding a solution that makes sense or works. Can a non primary key field be set to be unique or is the primary key the only field that gets set that way? That would be another way to approach this if that is possible, then this problem wouldn't exist.

Thanks again for looking,
Rick

  #14 (permalink)  
Old January 9th, 2008, 08:28 PM
Registered User
 
Join Date: Jan 2008
Location: , , .
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
Default

This is the entirety of the codebehind. I'm wondering if I changed the line "Private ITGResourcesId As Integer = -1" to "Public" if that would make that variable visible to the sub routine?



'Created using Module Builder 04.05.12 from SoCanI.org.
Imports DotNetNuke
Imports System.Web.UI
Imports System.Collections.Generic
Imports System.Reflection
Imports DotNetNuke.Security.PortalSecurity
Imports DotNetNuke.Entities.Modules
Imports DotNetNuke.Entities.Modules.Actions

Namespace ModuleBuilder.Modules.ITGResources
Partial Class AddITGResources
        Inherits PortalModuleBase
        Private ITGResourcesId As Integer = -1
        Private strReturnUrl As String
        Protected Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            strReturnUrl = Replace(Request.RawUrl, "ctl/AddITGResources", "")
            strReturnUrl = Replace(strReturnUrl, "mid/" & ModuleId, "")
            If Not (Request.QueryString("ITGResourcesId")) Is Nothing Then
                ITGResourcesId = CInt(Request.QueryString("ITGResourcesId"))
                strReturnUrl = Replace(strReturnUrl, "ITGResourcesId/" & Request.QueryString("ITGResourcesId"), "")
            End If


            If Null.IsNull(ITGResourcesId) Then
                Me.UpdateButton.Visible = False
                Me.DeleteButton.Visible = False
                If Request.QueryString("ctl") = "AddITGResources" Then
                    Me.pnlForm.Visible = True
                    Me.lblMessage.Visible = False
                Else
                    Me.lblMessage.Visible = True
                    Me.pnlForm.Visible = False
                End If
            Else
                Me.AddButton.Visible = False
                If Request.QueryString("ctl") <> "AddITGResources" Then
                    Me.CancelButton.Visible = False
                End If
            End If


            Me.pnlControl.Visible = IsEditable()
            If Not Page.IsPostBack Then

SetCategoryListOptions()
If Not (Request.QueryString("ITGResourcesId") Is Nothing) Then
Dim objITGResources As New ITGResourcesInfo
objITGResources = ITGResourcesController.ITGResources_Select(ITGReso urcesId)
Me.txtTitle.text = objITGResources.Title
Me.txtDescription.text = objITGResources.Description
Me.dtprPubDate.selectedvalue = objITGResources.PubDate
Me.txtLinkURL.text = objITGResources.LinkURL
Me.cmbCategory.selectedvalue = objITGResources.Category
Me.txtKeyWords.text = objITGResources.KeyWords
Me.tmprPubTime.selectedvalue = objITGResources.PubTime
Me.cmbPubMonth.selectedvalue = objITGResources.PubMonth
Me.txtPubYear.text = objITGResources.PubYear

Else
Me.txtPubYear.text = "2008"

End If
            End If





            If Request.QueryString("AutoAdd") = "True" Then
                Page.Validate()
                AddUpdateITGResources()
            End If
End Sub

Protected Sub SetCategoryListOptions()
Try
Dim myCStr As String = Config.GetConnectionString
Dim oconnection As New SqlClient.SqlConnection(myCStr)
oconnection.Open()
                Dim oCommand As New SqlClient.SqlCommand("Select [ItemID],[Category] from [ITGCategories] Group by [ItemID], [Category] HAVING [ItemID] Is Not Null Order by [Category];", oconnection)
Dim oDataReader As SqlClient.SqlDataReader = oCommand.ExecuteReader(CommandBehavior.CloseConnec tion)
While oDataReader.Read()
cmbCategory.Items.Add(New ListItem(oDataReader("Category"), oDataReader("ItemID")))
End While
Catch
cmbCategory.Items.Add(New ListItem("Unable to Load Values", "Unable to Load Values"))
End Try
End Sub
Sub AddUpdateITGResources()
If Page.IsValid Then
Dim objITGResources As New ITGResourcesInfo

objITGResources.ItemID= ITGResourcesId
objITGResources.PortalID= PortalID
objITGResources.ModuleID= ModuleID
objITGResources.UserID= Entities.Users.UserController.GetCurrentUserInfo.U serID
objITGResources.Title= Me.txtTitle.text
objITGResources.Description= Me.txtDescription.text
objITGResources.PubDate= Me.dtprPubDate.selectedvalue
objITGResources.LinkURL= Me.txtLinkURL.text
objITGResources.Category= Me.cmbCategory.selectedvalue
objITGResources.KeyWords= Me.txtKeyWords.text
objITGResources.PubTime= Me.tmprPubTime.selectedvalue
objITGResources.PubMonth= Me.cmbPubMonth.selectedvalue
objITGResources.PubYear= Me.txtPubYear.text

                If Null.IsNull(ITGResourcesId) Then
ITGResourcesController.ITGResources_Add (objITGResources)
Else
ITGResourcesController.ITGResources_Update (objITGResources)
End If
If Request.QueryString("AutoAdd") = "True" Then
    Response.Redirect (Request.QueryString("ReturnURL"))
Else
    Response.Redirect (strReturnUrl)
End If
End If
End Sub
        Sub DeleteITGResources(ByVal sender As Object, ByVal e As EventArgs) Handles DeleteButton.Click
Dim objITGResources As New ITGResourcesInfo
If Not Null.IsNull(ITGResourcesId) Then
    objITGResources.ItemId = ITGResourcesId
ITGResourcesController.ITGResources_Delete (objITGResources)
End If
Response.Redirect(strReturnUrl)
        End Sub
Protected Sub CancelButtonImage_Click(ByVal sender As Object, ByVal e As EventArgs) Handles CancelButton.Click
Response.Redirect(strReturnUrl)
End Sub
Sub AddButtonClick(ByVal sender As Object, ByVal e As EventArgs) Handles AddButton.Click
AddUpdateITGResources()
End Sub
Sub UpdateButtonClick(ByVal sender As Object, ByVal e As EventArgs) Handles UpdateButton.Click
AddUpdateITGResources()
End Sub
        Private Sub CustomValidator1_ServerValidate(ByVal _
           source As System.Object, ByVal args As _
           System.Web.UI.WebControls.ServerValidateEventArgs) _
           Handles CustomValidator1.ServerValidate


            Dim nameData As New System.Data.DataSet
            Dim connString As String = "Data Source=.\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Data base.mdf;"
            Dim dbConnection As New SqlConnection(connString) ' = New SqlClient.SqlConnection(dsn)
            Dim Query As String
            Query = "Select [LinkURL] FROM ITGArticles WHERE [ItemID] <> Me.txtItemID"
            Dim dbCommand As New SqlCommand(Query, dbConnection)
            Dim sqlDataAdapter As New SqlDataAdapter(dbCommand)
            sqlDataAdapter.Fill(nameData)

            Dim dv As New DataView
            dv = nameData.Tables(0).DefaultView


            Dim datarow As DataRowView
            Dim txtLinkURL As String
            args.IsValid = True ' Assume True
            ' Loop through table and compare each record against user's entry
            For Each datarow In dv
                ' Extract link from the current row
                txtLinkURL = datarow.Item("LinkURL").ToString()
                ' Compare Link against user's entry
                If txtLinkURL = args.Value Then
                    args.IsValid = False
                    Exit For
                End If


            Next
        End Sub

    End Class
End Namespace


  #15 (permalink)  
Old January 10th, 2008, 05:32 PM
Imar's Avatar
Wrox Author
Points: 70,322, Level: 100
Points: 70,322, Level: 100 Points: 70,322, Level: 100 Points: 70,322, Level: 100
Activity: 0%
Activity: 0% Activity: 0% Activity: 0%
 
Join Date: Jun 2003
Location: Utrecht, Netherlands.
Posts: 17,089
Thanks: 80
Thanked 1,576 Times in 1,552 Posts
Default

This is a bit too much code for me to digest over a forum post looking for a possible problem. Sorry.

I think you need to get some training in this by getting a book like Beginning ASP.NET or tell your employer that graphical design is not the same as programming.... ;)

To answer your question: no, it wouldn't. ITGResourcesId is a private variable, but it is visible / accessible to all members within the class it is defined in.

Imar
---------------------------------------
Imar Spaanjaars
http://Imar.Spaanjaars.Com
Everyone is unique, except for me.
Author of ASP.NET 2.0 Instant Results and Beginning Dreamweaver MX / MX 2004
Want to be my colleague? Then check out this post.
  #16 (permalink)  
Old January 10th, 2008, 09:13 PM
Registered User
 
Join Date: Jan 2008
Location: , , .
Posts: 5
Thanks: 0
Thanked 0 Times in 0 Posts
Default

Thanks again Imar for your time. This project is supposed to have been completed tomorrow. Not gonna happen and the boss will have to live with it. I hope I don't have to face this type of thing on a time constraint again, learning can be fun when there is no pressure.

I did, however, decide to try inactivating the custom validator instead of accessing the variable, and that was successful. It now validates new entries only, which should be good enough, not perfect, but good enough for now.

I added the following code:

            Dim objITGResources As New ITGResourcesInfo
            objITGResources.ItemID = ITGResourcesId
            If Null.IsNull(objITGResources.ItemID) Then

And, for whatever reason, even though I couldn't "bind" the value in the sql query, it let me determine if it is null or not, and if it is null then it's not an update and it performs the validation routine. If it is null, then it's a new record being added and the validation does the database lookup for duplicate records containing the same url text in the field.

Mostly, what I've learned is that before attempting this again, I'm not buying a book, I'll take a class!!!

Thanks again, I do appreciate your time.
Rick
  #17 (permalink)  
Old January 12th, 2008, 06:25 AM
Imar's Avatar
Wrox Author
Points: 70,322, Level: 100
Points: 70,322, Level: 100 Points: 70,322, Level: 100 Points: 70,322, Level: 100
Activity: 0%
Activity: 0% Activity: 0% Activity: 0%
 
Join Date: Jun 2003
Location: Utrecht, Netherlands.
Posts: 17,089
Thanks: 80
Thanked 1,576 Times in 1,552 Posts
Default

Quote:
quote:I'm not buying a book, I'll take a class!!!
You may want to do both. Take a class to get familiar with the concepts and the overall picture. Then use books to get detailed information about certain areas....

Cheers,

Imar
---------------------------------------
Imar Spaanjaars
http://Imar.Spaanjaars.Com
Everyone is unique, except for me.
Author of ASP.NET 2.0 Instant Results and Beginning Dreamweaver MX / MX 2004
Want to be my colleague? Then check out this post.




Similar Threads
Thread Thread Starter Forum Replies Last Post
DDL Custom Validator AspNetGuy BOOK: Beginning ASP.NET 3.5 : in C# and VB BOOK ISBN: 978-0-470-18759-3 2 June 6th, 2008 05:17 PM
custom validator question kscdave Classic ASP Professional 3 April 24th, 2005 07:11 AM
Custom Validator for Two text box. vickyhere ASP.NET 1.0 and 1.1 Basics 2 October 15th, 2004 06:41 AM
Custom Validator bmains ASP.NET 1.0 and 1.1 Basics 4 December 18th, 2003 11:45 AM





Powered by vBulletin®
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Copyright (c) 2020 John Wiley & Sons, Inc.