|
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
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" />
|