a00cafa3efef44b62261b8f574d89f21903330d2
[infodrom/rico3] / examples / dotnet / simplegrid.aspx
1 <%@ Page Language="VB" ResponseEncoding="iso-8859-1" Debug="true" %>\r
2 <%@ Register TagPrefix="Rico" Assembly="Rico" NameSpace="Rico" %>\r
3 <%@ Register TagPrefix="My" TagName="dbLib" Src="dbConnect.ascx" %>\r
4 <My:dbLib id='app' runat='server' />\r
5 \r
6 <script runat="server">\r
7 \r
8 Sub Page_Load(Sender As object, e As EventArgs)\r
9   dim category,lastCategory,Discounts,Gross,subtotals(1),grandtotals(1),i\r
10   dim command,rdr\r
11 \r
12   if not app.OpenDB() then exit sub\r
13   \r
14   for i=0 to 1\r
15     grandtotals(i)=0\r
16   next\r
17 \r
18   ' define heading\r
19   ex1.AddHeadingRow(true)\r
20   ex1.AddCell("Product")\r
21   ex1.AddCell("Gross Sales")\r
22   ex1.AddCell("Discounts")\r
23   ex1.AddCell("Net Sales")\r
24   ex1.AddCell("Avg Discount")\r
25 \r
26   command = app.dbConnection.CreateCommand()\r
27   command.CommandText="select CategoryName,ProductName, " & _\r
28     "SUM(od.UnitPrice*Quantity) as GrossSales, " & _\r
29     "SUM(od.UnitPrice*Quantity*Discount) as Discounts " & _\r
30     "from ((Order_Details od " & _\r
31     "inner join Products p on p.ProductID=od.ProductID) " & _\r
32     "inner join Categories c on p.CategoryID=c.CategoryID) " & _\r
33     "group by CategoryName,ProductName " & _\r
34     "order by CategoryName,ProductName"\r
35   rdr = command.ExecuteReader()\r
36   while rdr.Read()\r
37     category=rdr("CategoryName")\r
38     Gross=rdr("GrossSales")\r
39     Discounts=rdr("Discounts")\r
40     if category<>lastCategory then\r
41       if not IsNothing(lastCategory) then\r
42         AddRow("Subtotal",subtotals(0),subtotals(1))\r
43         ex1.SetRowAttr("class","Subtotal")\r
44       end if\r
45       ex1.AddDataRow\r
46       ex1.SetRowAttr("class","CatHead")\r
47       ex1.AddCell(category)\r
48       ex1.AddCell("")\r
49       ex1.AddCell("")\r
50       ex1.AddCell("")\r
51       ex1.AddCell("")\r
52       for i=0 to 1\r
53         subtotals(i)=0\r
54       next\r
55       lastCategory=category\r
56     end if\r
57     subtotals(0)+=Gross\r
58     grandtotals(0)+=Gross\r
59     subtotals(1)+=Discounts\r
60     grandtotals(1)+=Discounts\r
61     AddRow(rdr("ProductName"),Gross,Discounts)\r
62   end while\r
63   rdr.Close()\r
64   if not IsNothing(lastCategory) then\r
65     AddRow("Subtotal",subtotals(0),subtotals(1))\r
66     ex1.SetRowAttr("class","Subtotal")\r
67   end if\r
68   AddRow("Grand Total",grandtotals(0),grandtotals(1))\r
69   ex1.SetRowAttr("class","GrandTotal")\r
70 End Sub\r
71 \r
72 sub AddRow(ProductName as String, Gross as Double, Discounts as Double)\r
73   dim pct as double\r
74   ex1.AddDataRow()\r
75   ex1.AddCell(ProductName)\r
76   ex1.AddCell("$" & FormatNumber(Gross,0,-1,0,-1))\r
77   ex1.AddCell("$" & FormatNumber(Discounts,0,-1,0,-1))\r
78   ex1.AddCell("$" & FormatNumber(Gross-Discounts,0,-1,0,-1))\r
79   pct=Discounts/Gross\r
80   ex1.AddCell(pct.toString("0%"))\r
81 end sub\r
82 \r
83 Protected Overrides Sub Render(writer as HTMLTextWriter)\r
84   select case lcase(Request.QueryString("fmt"))\r
85     case "xl":  ex1.RenderExcel("rico.xls")\r
86     case "csv": ex1.RenderDelimited("rico.csv", ",", "")\r
87     case else:  MyBase.Render(writer)   ' output html\r
88   end select\r
89 End Sub\r
90 \r
91 </script>\r
92 \r
93 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">\r
94 <html>\r
95 <head>\r
96 <title>Rico SimpleGrid-Example 1</title>\r
97 \r
98 <Rico:LoadClient checkQueryString='true' runat='server' />\r
99 <link href="../demo.css" type="text/css" rel="stylesheet" />\r
100 \r
101 \r
102 <script type='text/javascript'>\r
103 function ExportGridClient() {\r
104   ex1['grid'].printVisible();\r
105 }\r
106 \r
107 function ExportGridServer(ExportType) {\r
108   if (Rico.isIE) {\r
109     location.href+='&fmt='+ExportType;\r
110   } else {\r
111     window.open(location.href+'&fmt='+ExportType);\r
112   }\r
113 }\r
114 </script>\r
115 \r
116 <style type="text/css">\r
117 .CatHead {\r
118   background:blue;\r
119   color:white;\r
120   font-weight:bold !important;\r
121 }\r
122 .Subtotal {\r
123   background:#888;\r
124   color:white;\r
125   font-weight:bold !important;\r
126 }\r
127 .GrandTotal {\r
128   background:black;\r
129   color:white;\r
130   font-weight:bold !important;\r
131 }\r
132 div.ricoLG_cell {\r
133   white-space:nowrap;\r
134 }\r
135 </style>\r
136 \r
137 </head>\r
138 \r
139 <body>\r
140 \r
141 <div id='explanation'>\r
142 Base Library: \r
143 <script type='text/javascript'>\r
144 document.write(Rico.Lib+' '+Rico.LibVersion);\r
145 </script>\r
146 <hr>\r
147 <p><strong>Rico: SimpleGrid</strong></p>\r
148 <p>Rico's SimpleGrid is an unbuffered grid - all data exists in the DOM.\r
149 It shares many of the same characteristics as Rico's better known LiveGrid.\r
150 SimpleGrids have resizable columns, frozen columns on the left, and can use the\r
151 same CSS styling as LiveGrids. Sorting and filtering can also be enabled\r
152 at the developer's discretion. Unlike LiveGrids, each cell in a SimpleGrid\r
153 can be formatted individually.\r
154 </div>\r
155 \r
156 \r
157 <div>\r
158 <button onclick="ExportGridClient()">Export from client<br>to HTML Table</button>\r
159 <button onclick="ExportGridServer('xl')">Export from server<br>to Excel</button>\r
160 <button onclick="ExportGridServer('csv')">Export from server<br>to CSV</button>\r
161 </div>\r
162 \r
163 <Rico:SimpleGrid runat='server' id='ex1' FrozenCols='1'>\r
164 <GridColumns>\r
165   <Rico:Column runat='server' width='200' />\r
166   <Rico:Column runat='server' spec='specQty' />\r
167   <Rico:Column runat='server' spec='specQty' />\r
168   <Rico:Column runat='server' spec='specQty' />\r
169   <Rico:Column runat='server' spec='specQty' />\r
170 </GridColumns>\r
171 </Rico:SimpleGrid>\r
172 \r
173 </body>\r
174 </html>\r
175 \r