E:\web\learnaspcom\htdocs\freebook\learn\ubtoc.xml LearnAsp.com - ASP ASP.net Free Lessons
Search Search

#1 worldwide
FREE Coding Lessons

since 1996
   THE BEST WAY to learn ASP & Asp.net!
Advertise Here!
click for details
Credits Host:
DiscountASP.net
Server Admin:
The "Team"
Contact Info.
Charles M. Carroll
<Asp.net blog>
<personal site>
xxx

Programatically Creating User Controls For Amazon.com books
by Pete Draigh

This page demonstrates a very useful in the real-world User Control to encapsulate a hyperlink and book cover to buy something from Amazon.com and to use one's promotional code to make a little money on the deal.

Simple page:

   filename=/libraryaspng/booktable_test.aspx

<Test Script Below>


Utility Belt ScriptColorCode cannot find the file:
E:\web\learnaspcom\htdocs\libraryaspng\booktable_test.aspx

The User Control:

filename=/libraryaspng/booktable.ascx


<%@ Register TagPrefix="bookshow" tagname="cover" src="books.ascx"%>
<%@ import namespace="system.data"%>
<script runat="server" language="vb">
Public columns as integer=7
public rows as integer=2
public promocode as string="learnasp"
public discuss as boolean=false
public table as boolean=true
public topic as string
public height as integer=140
public width as integer=109
'protected ChrisTaylor as Tablecell
Sub Page_Load(Src As Object, E As EventArgs)
    Dim intMaxBookcount=rows*columns
    
    DIM dtblbooks as new datatable()
    dtblBooks.Columns.Add(new DataColumn("ISBN", GetType(String)))
        dtblBooks.Columns.Add(new DataColumn("Priority", GetType(Integer)))
    dtblBooks.Columns.Add(new DataColumn("Title", GetType(String)))
    
    

    IF topic="vbnetintro"     
        DtblAddRows(dtblbooks,"0672320681",2) ' Walther
        DtblAddRows(dtblbooks,"0735614237",2) ' ADO.net Core Ref
    END IF


    IF topic="c#intro"     
        DtblAddRows(dtblbooks,"0201760401",2) ' Fritz Onion
        DtblAddRows(dtblbooks,"0735614237",2) ' ADO.net Core Ref
    END IF

    IF topic="" OR topic="essential"     
        DtblAddRows(dtblbooks,"067232542X",9) ' Walther
        DtblAddRows(dtblbooks,"0735614237",1) ' ADO.net Core Ref
        DtblAddRows(dtblbooks,"0596003080",1) ' VB.net in Nutshell
        DtblAddRows(dtblbooks,"B00005YX8N",1) ' Appleman VB.net vs C#
        DtblAddRows(dtblbooks,"1861007787",1) ' Beginning VB.net XML
        DtblAddRows(dtblbooks,"0672325012",1) ' Mitchell Data
        DtblAddRows(dtblbooks,"0972317910",1) ' Build Server Controls Online
        DtblAddRows(dtblbooks,"0596003196",1) ' C# VB.net Conversion Pocket
    END IF


    IF topic="" OR topic="optional" THEN    
        DtblAddRows(dtblbooks,"0596000464",1) ' Learning XML
        DtblAddRows(dtblbooks,"0672322331",1) ' Nillson Architecture
        DtblAddRows(dtblbooks,"0596001169",1) ' ASP.net in Nutshell
        DtblAddRows(dtblbooks,"0672322323",1) ' Snell Powers FW book
        DtblAddRows(dtblbooks,"0201715945",1) ' Design Patterns Explained
        DtblAddRows(dtblbooks,"B0000632ZU",1) ' Reg Expressions Appleman
        DtblAddRows(dtblbooks,"B00006488E",1) ' Qbfuscating by Appleman
        DtblAddRows(dtblbooks,"0201774259",1) ' Yasser WS
        DtblAddRows(dtblbooks,"0596003196",1) ' C# VB.net Conversion Pocket
        'DtblAddRows(dtblbooks,"1861007450",1) ' Namespace Reference
        DtblAddRows(dtblbooks,"1861004516",1) ' Pro XML Metadata
        DtblAddRows(dtblbooks,"0201485672",1) ' Refactoring
        'DtblAddRows(dtblbooks,"0735615829",1) ' Server Controls
        'DtblAddRows(dtblbooks,"1861007086",1) ' VB.net Class Design
        DtblAddRows(dtblbooks,"0672325012",1) ' Mitchell Data
        DtblAddRows(dtblbooks,"1861007558",1) ' Performance
        DtblAddRows(dtblbooks,"0596002238",1) ' SVG Essentials
        DtblAddRows(dtblbooks,"0201596253",1) ' CSS
        DtblAddRows(dtblbooks,"1861008163",1) ' Website Programming VB.net
        
        DtblAddRows(dtblbooks,"0321228960",6) ' ASP.net 2.0 by Alex Homer
        DtblAddRows(dtblbooks,"0321228391",6) ' ADO.net System XML 2.0
    END IF
    
    
    IF topic="ScottMitchell" THEN    
        DtblAddRows(dtblbooks,"0672318636",1) ' 21 days ASP
        DtblAddRows(dtblbooks,"0672321432",1) ' ASP.net Tips
        DtblAddRows(dtblbooks,"0596000448",1) ' Designing ASP
        DtblAddRows(dtblbooks,"0672325012",1) ' Mitchell Data
        DtblAddRows(dtblbooks,"0672321688",1) ' 21 days ASP.net 
    END IF
    
    IF topic="VBC#" THEN    
        DtblAddRows(dtblbooks,"0596003196",1) ' C# VB.net Conversion Pocket
        DtblAddRows(dtblbooks,"B00005YX8N",1) ' Appleman VB.net vs C#    
    END IF
    
    IF topic="advice" THEN
        DtblAddRows(dtblbooks,"1565114248",1) ' The Goal Audio
        DtblAddRows(dtblbooks,"0932633013",1) ' Secrets of Consulting
    END IF

    if topic="vbnetlibrary"
        DtblAddRows(dtblbooks,"0596000464",1) ' Learning XML
        DtblAddRows(dtblbooks,"0672322331",1) ' Nillson Architecture
        DtblAddRows(dtblbooks,"0672322323",1) ' Snell Powers FW book
        DtblAddRows(dtblbooks,"0201715945",1) ' Design Patterns Explained
        DtblAddRows(dtblbooks,"0596003196",1) ' C# VB.net Conversion Pocket
        DtblAddRows(dtblbooks,"0201485672",1) ' Refactoring
        DtblAddRows(dtblbooks,"0735615829",1) ' Server Controls
        DtblAddRows(dtblbooks,"1861007086",1) ' VB.net Class Design
        DtblAddRows(dtblbooks,"1861007558",1) ' Performance
        DtblAddRows(dtblbooks,"1861008163",1) ' Website Programming VB.net
        DtblAddRows(dtblbooks,"1861007787",1) ' Beginning VB.net XML
        
        DtblAddRows(dtblbooks,"0596003609",1) ' Sells Mastering Vstudio
        DtblAddRows(dtblbooks,"0672324768",1) ' ASP.net Quickstart
        DtblAddRows(dtblbooks,"0764526413",1) ' About Face
        DtblAddRows(dtblbooks,"0201760398",1) ' VB.net ASP.net Essentials
        DtblAddRows(dtblbooks,"0735613753",1) ' Balena Big Book
        
    end if


    'DtblAddRows(dtblbooks,"1861005318",1) ' Pro XML WROX

    'DtblAddRows(dtblbooks,"078214103X",1) ' CodeMasters Library
    'DtblAddRows(dtblbooks,"1861007035",1) ' Pro ASP.net
    'DtblAddRows(dtblbooks,"0596002890",1) ' Reg Expr. O'Reilly
    'DtblAddRows(dtblbooks,"1861006934",1) ' ASp.net Website Design

    Dim intRowCounter as integer
    Dim intColCounter as integer

    ' Now Get Data into array weighted by priority
    DIM Random1 as new Random()
    DIM intRandomNum as integer

    Dim intMaxRowsDtbl as integer=dtblBooks.rows.count
    Dim intMaxRowsArray as integer=intMaxBookCount

    ' Need to Make an Array and place in Random Order
    DIM arryRandom(intMaxRowsDtbl) as integer
    DIM i as integer
    FOR i=0 to intMaxRowsDtbl-1
        arryRandom(i)=i
    NEXT
    Call RandomizeArray1d(arryRandom,3)

    ' Populate the Array from DataTable
    DIM arryBooks(intMaxBookcount) as string
    DIM intRowDtblCounter as integer=0
    dim dtblrow1 as datarow
        FOR EACH dtblrow1 IN dtblbooks.Rows
                'arryBooks(intRowDtblCounter)=dtblrow1(0)
        arryBooks(intRowDtblCounter)=dtblbooks.Rows(arryRandom(intRowDtblCounter)).Item(0)
        IF intRowDtblCounter=intMaxRowsArray
            EXIT FOR
        END IF
        intRowDtblCounter+=1
        NEXT
    IF table
    'Call RandomizeArray1d(arryBooks,3)
    DIM intCellCounter as integer
    For intRowCounter=1 TO rows
        Dim tr1 as new tablerow()
        For intColCounter=1 TO columns
            intCellCounter += 1
            Dim tc1 As New TableCell()

            ' 
            ' tc1.controls.add(new literalcontrol(arryBooks(intCellCounter-1)))

            dim c1 as control
            c1 = LoadControl("books.ascx")
            dim strDebug as string=arryBooks(intCellCounter-1)
            trace.write("strDebug",strDebug)
            CType(c1, AmazonLink).isbn = strDebug
            CType(c1, AmazonLink).height = height
            CType(c1, AmazonLink).width = width
            CType(c1, AmazonLink).promocode = "learnasp"
            CType(c1, AmazonLink).discuss = true
            tc1.controls.add(c1)

            tr1.Cells.Add(tc1)


        Next 
        tbl1.controls.Add(tr1)
    Next
    
    ELSE
    DIM intCellCounter as integer
    tbl1.visible=false
    For intRowCounter=1 TO rows
        Dim tr1 as new tablerow()
        For intColCounter=1 TO columns
            intCellCounter += 1            
            
            dim c1 as control
            c1 = LoadControl("books.ascx")
            CType(c1, AmazonLink).isbn = arryBooks(intCellCounter-1)
            CType(c1, AmazonLink).height = height
            CType(c1, AmazonLink).width = width
            CType(c1, AmazonLink).promocode = "learnasp"
            CType(c1, AmazonLink).discuss = true
            
            plcBooks.controls.add(c1)

        Next 
        plcBooks.controls.add(new literalcontrol("<br>"))
    Next        
    END IF
    
    'DIM cell1 as tablecell
    'cell1=Findcontrol("ChrisTaylor")
    'ChrisTaylor.ColumnSpan=Columns
End Sub

Sub DtblAddRows(p1 as datatable,p2 as string, p3 as integer)
    dim dtblrowTemp as datarow
    dtblrowTemp = p1.NewRow()
        dtblrowTemp(0) = p2
        dtblrowTemp(1) = p3
        p1.Rows.Add(dtblrowTemp)
end sub

SUB  RandomizeArray1d(arryP1 as array, intP2Shufflecount as integer)
        ' Now Randomize Array
        DIM Random1 as new Random()
        DIM intRandomNum as integer
        dim intMaxArraySize as integer=arryP1.GetupperBound(0)
         DIM intMaxShuffleCount as integer=intMaxArraySize*intP2Shufflecount
         DIM strSwap1, strSwap2 as string
        DIM intShuffleCounter as integer

         FOR intShuffleCounter=0 TO intMaxShuffleCount
            intRandomNum=Random1.Next(intMaxArraySize)
            strSwap1=arryP1(intRandomNum)
            strSwap2=arryP1(intMaxArraySize-1)
            arryP1(intRandomNum)=strSwap2
            arryP1(intMaxArraySize-1)=strSwap1
        NEXT
END SUB

</script>
<ASP:table id=tbl1 cellpadding="2" runat="server"/>
<ASP:Placeholder id="plcBooks" runat="server" />




 
Chaz Wish List
Tall Tip $5
Grande Tip $20
Venti Tip $39
Tip Jar Thanks
2004 Thanks
2005 Thanks
HUGE Tip -love site