<dd>Token in select filters used to indicate "show all values" (default: "___ALL___").\r
</dl>\r
\r
-<h4>Images</h4>\r
-<dl>\r
-<dt>resizeBackground\r
-<dd>Image to use for column resize handle. (default: 'resize.gif')\r
-\r
-<dt>sortAscendImg\r
-<dd>Image to use to indicate that the column is sorted in ascending order. (default: 'sort_asc.gif')\r
-\r
-<dt>sortDescendImg\r
-<dd>Image to use to indicate that the column is sorted in descending order. (default: 'sort_desc.gif')\r
-\r
-<dt>filterImg\r
-<dd>Image used to indicate an active filter on a column. (default: 'filtercol.gif')\r
-</dl>\r
-\r
-\r
<h4>Cookie options</h4>\r
<dl>\r
\r
<dt>type (DataType in .net plug-in)\r
<dd>A string containing one of these values: \r
<ul>\r
-<li>text - any tags in the column value are removed before being displayed to the user.\r
-<li>showTags - any tags in the column value are displayed to the user as text.\r
+<li>text (default) - plain text.\r
<li>number - column value is treated as a number, \r
and any <a href='#NumberFormatting'>number formatting options</a> \r
supplied in the column specification are applied.\r
<li>datetime - column value is treated as a date & time, \r
and any <a href='#DateFormatting'>date formatting options</a> \r
supplied in the column specification are applied.\r
-<li>UTCasLocalTime - column/database value is treated as a GMT/UTC date & time, and any <a href='#DateFormatting'>date formatting options</a> \r
+<li>utcaslocaltime - column/database value is treated as a GMT/UTC date & time, and any <a href='#DateFormatting'>date formatting options</a> \r
supplied in the column specification are applied. Before display, the value is converted to the user's local time zone.\r
<li>date - column value is treated as a date, and any <a href='#DateFormatting'>date formatting options</a> \r
supplied in the column specification are applied.\r
-<li>raw (default) - column values are displayed directly to the grid cell. \r
+<li>html - column values are displayed directly to the grid cell. \r
Any HTML markup gets copied into the cell.\r
</ul>\r
</dd>\r
<dt>decPlaces\r
<dd>Number of places to the right of the decimal point. (default: 0)\r
\r
-<dt>decPoint\r
-<dd>Decimal point symbol. (default: '.' but overridden in the translation files)\r
-\r
<dt>thouSep\r
-<dd>Symbol for thousands separator. (default: ',' but overridden in the translation files)\r
+<dd>Boolean indicating whether to insert thousands separator. (default: true)\r
\r
<dt>negSign\r
<dd>Specifies how negative numbers should be displayed. Possible values:\r
float: left;\r
padding: 5px;\r
}\r
-\r
-div.ricoLG_cell {\r
- font-size: 8pt;\r
- height: 12px;\r
- white-space: nowrap;\r
-}\r
</style>\r
\r
</head>\r
\r
<div class='gridcontainer' style='height:39%'>\r
\r
-<Rico:LiveGrid runat='server' id='customer' caption='Customers' rows='-4' frozenColumns='2' TableName='customers' DefaultSort='CustomerID' menuEvent='contextmenu' DisplayTimer='false' highlightElem='menuRow' dblclick="Rico.eventHandle(window,'customerDrillDown')">\r
- <Rico:Column runat='server' heading='Customer#' colname='CustomerID' width='60' />\r
- <Rico:Column runat='server' heading='Company' colname='CompanyName' width='150' />\r
- <Rico:Column runat='server' heading='Contact' colname='ContactName' width='115' />\r
- <Rico:Column runat='server' heading='Address' colname='Address' width='130' />\r
- <Rico:Column runat='server' heading='City' colname='City' width='90' />\r
- <Rico:Column runat='server' heading='Region' colname='Region' width='60' />\r
- <Rico:Column runat='server' heading='Postal Code' colname='PostalCode' width='90' />\r
- <Rico:Column runat='server' heading='Country' colname='Country' width='100' />\r
- <Rico:Column runat='server' heading='Phone' colname='Phone' width='115' />\r
- <Rico:Column runat='server' heading='Fax' colname='Fax' width='115' />\r
+<Rico:LiveGrid runat='server' id='customer' caption='Customers' rows='-4' frozenColumns='2' DefaultSort='CustomerID' menuEvent='contextmenu' DisplayTimer='false' highlightElem='menuRow' dblclick="Rico.eventHandle(window,'customerDrillDown')">\r
+ <Rico:DefaultGridStyle runat='server' fontsize="8" />\r
+ <Rico:Table runat='server' TblName='customers' />\r
+ <Rico:TableCol runat='server' heading='Cust ID' colname='CustomerID' width='60' />\r
+ <Rico:TableCol runat='server' heading='Company' colname='CompanyName' width='150' />\r
+ <Rico:TableCol runat='server' heading='Contact' colname='ContactName' width='115' />\r
+ <Rico:TableCol runat='server' heading='Address' colname='Address' width='130' />\r
+ <Rico:TableCol runat='server' heading='City' colname='City' width='90' />\r
+ <Rico:TableCol runat='server' heading='Region' colname='Region' width='60' />\r
+ <Rico:TableCol runat='server' heading='Postal Code' colname='PostalCode' width='90' />\r
+ <Rico:TableCol runat='server' heading='Country' colname='Country' width='100' />\r
+ <Rico:TableCol runat='server' heading='Phone' colname='Phone' width='115' />\r
+ <Rico:TableCol runat='server' heading='Fax' colname='Fax' width='115' />\r
</Rico:LiveGrid>\r
\r
</div>\r
<div class='gridcontainer' style='height:30%'>\r
\r
-<Rico:LiveGrid runat='server' id='order' caption='' rows='-4' prefetchBuffer='false' TableName='orders' DefaultSort='OrderID' menuEvent='contextmenu' DisplayTimer='false' highlightElem='menuRow' dblclick="Rico.eventHandle(window,'orderDrillDown')">\r
- <Rico:Column runat='server' heading='Customer#' colname='CustomerID' width='60' canSort='false' visible='false'/>\r
- <Rico:Column runat='server' heading='Order#' colname='OrderID' width='60' />\r
- <Rico:Column runat='server' heading='Ship Name' colname='ShipName' width='150' />\r
- <Rico:Column runat='server' heading='Ship City' colname='ShipCity' width='80' />\r
- <Rico:Column runat='server' heading='Ship Country' colname='ShipCountry' width='90' />\r
- <Rico:Column runat='server' heading='Order Date' colname='OrderDate' width='100' datatype='date' />\r
- <Rico:Column runat='server' heading='Ship Date' colname='ShippedDate' width='100' datatype='date' />\r
+<Rico:LiveGrid runat='server' id='order' caption='' rows='-4' prefetchBuffer='false' DefaultSort='OrderID' menuEvent='contextmenu' DisplayTimer='false' highlightElem='menuRow' dblclick="Rico.eventHandle(window,'orderDrillDown')">\r
+ <Rico:DefaultGridStyle runat='server' fontsize="8" />\r
+ <Rico:Table runat='server' TblName='orders' />\r
+ <Rico:TableCol runat='server' heading='Cust ID' colname='CustomerID' width='60' canSort='false' visible='false' />\r
+ <Rico:TableCol runat='server' heading='Order#' colname='OrderID' width='60' />\r
+ <Rico:TableCol runat='server' heading='Ship Name' colname='ShipName' width='150' />\r
+ <Rico:TableCol runat='server' heading='Ship City' colname='ShipCity' width='80' />\r
+ <Rico:TableCol runat='server' heading='Ship Country' colname='ShipCountry' width='90' />\r
+ <Rico:TableCol runat='server' heading='Order Date' colname='OrderDate' width='100' datatype='date' />\r
+ <Rico:TableCol runat='server' heading='Ship Date' colname='ShippedDate' width='100' datatype='date' />\r
</Rico:LiveGrid>\r
\r
</div>\r
<div class='gridcontainer' style='height:30%'>\r
\r
-<Rico:LiveGrid runat='server' id='detail' caption='' rows='-4' prefetchBuffer='false' TableName='order_details' menuEvent='contextmenu' DisplayTimer='false' highlightElem='menuRow'>\r
- <Rico:AltTable runat='server' TblName='products' TblAlias='p' JoinCondition='t.ProductId=p.ProductId' />\r
- <Rico:Column runat='server' heading='Order#' colname='OrderID' width='60' canSort='false' visible='false' />\r
- <Rico:Column runat='server' heading='Description' colname='ProductName' width='150' AltTable='products' />\r
- <Rico:Column runat='server' heading='Unit Quantity' colname='QuantityPerUnit' width='125' AltTable='products' />\r
- <Rico:Column runat='server' heading='Unit Price' colname='UnitPrice' width='80' format='Dollar' AltTable='products' />\r
- <Rico:Column runat='server' heading='Qty' colname='Quantity' width='50' format='Qty' />\r
- <Rico:Column runat='server' heading='Total' formula='t.UnitPrice*t.Quantity' width='80' format='Dollar' />\r
- <Rico:Column runat='server' heading='Discount' colname='Discount' width='80' format='Percent' />\r
- <Rico:Column runat='server' heading='Net Price' formula='t.UnitPrice*t.Quantity*(1.0-Discount)' width='90' format='Dollar' />\r
+<Rico:LiveGrid runat='server' id='detail' caption='' rows='-4' prefetchBuffer='false' menuEvent='contextmenu' DisplayTimer='false' highlightElem='menuRow'>\r
+ <Rico:DefaultGridStyle runat='server' fontsize="8" />\r
+ <Rico:Table runat='server' TblName='order_details' TblAlias='t' />\r
+ <Rico:Table runat='server' TblName='products' TblAlias='p' JoinCondition='t.ProductId=p.ProductId' />\r
+ <Rico:TableCol runat='server' heading='Order#' colname='OrderID' width='60' canSort='false' visible='false' />\r
+ <Rico:TableCol runat='server' heading='Description' colname='ProductName' width='150' AltTable='products' />\r
+ <Rico:TableCol runat='server' heading='Unit Quantity' colname='QuantityPerUnit' width='125' AltTable='products' />\r
+ <Rico:TableCol runat='server' heading='Unit Price' colname='UnitPrice' width='80' datatype='Dollar' AltTable='products' />\r
+ <Rico:TableCol runat='server' heading='Qty' colname='Quantity' width='50' datatype='number' />\r
+ <Rico:FormulaCol runat='server' heading='Total' formula='t.UnitPrice*t.Quantity' width='80' datatype='Dollar' />\r
+ <Rico:TableCol runat='server' heading='Discount' colname='Discount' width='80' datatype='Percent' />\r
+ <Rico:FormulaCol runat='server' heading='Net Price' formula='t.UnitPrice*t.Quantity*(1.0-Discount)' width='90' datatype='Dollar' />\r
</Rico:LiveGrid>\r
\r
</div>\r
Sub Page_Load(Sender As object, e As EventArgs)\r
Dim restrictions() As String = New String(3) {}\r
if app.OpenDB() then\r
- restrictions(3)="BASE TABLE"\r
- 'restrictions(3)="TABLE"\r
+ \r
+ select case app.dbDialect\r
+ case "Access": restrictions(3)="TABLE"\r
+ case else: restrictions(3)="BASE TABLE"\r
+ end select\r
+ \r
TableList.DataSource = app.dbConnection.GetSchema ("Tables", restrictions)\r
TableList.DataBind()\r
restrictions(3)="VIEW"\r
<asp:Repeater ID="TableList" Runat="server">\r
<ItemTemplate>\r
<li>\r
-<asp:HyperLink runat="server" NavigateUrl='<%# "RicoDbViewerDetail.aspx?id=" & DataBinder.Eval(Container.DataItem, "TABLE_NAME") & "&" & request.servervariables("QUERY_STRING") %>' Text='<%#DataBinder.Eval(Container.DataItem, "TABLE_NAME")%>' Target="detail" />\r
+<asp:HyperLink runat="server" NavigateUrl='<%# "RicoDbViewerDetail.aspx?tabid=" & DataBinder.Eval(Container.DataItem, "TABLE_NAME") & "&" & request.servervariables("QUERY_STRING") %>' Text='<%#DataBinder.Eval(Container.DataItem, "TABLE_NAME")%>' Target="detail" />\r
</li>\r
</ItemTemplate>\r
</asp:Repeater>\r
<asp:Repeater ID="ViewList" Runat="server">\r
<ItemTemplate>\r
<li>\r
-<asp:HyperLink runat="server" NavigateUrl='<%# "RicoDbViewerDetail.aspx?id=" & DataBinder.Eval(Container.DataItem, "TABLE_NAME") & "&" & request.servervariables("QUERY_STRING") %>' Text='<%#DataBinder.Eval(Container.DataItem, "TABLE_NAME")%>' Target="detail" />\r
+<asp:HyperLink runat="server" NavigateUrl='<%# "RicoDbViewerDetail.aspx?tabid=" & DataBinder.Eval(Container.DataItem, "TABLE_NAME") & "&" & request.servervariables("QUERY_STRING") %>' Text='<%#DataBinder.Eval(Container.DataItem, "TABLE_NAME")%>' Target="detail" />\r
</li>\r
</ItemTemplate>\r
</asp:Repeater>\r
Sub Page_Load(Sender As object, e As EventArgs)\r
Dim restrictions() As String = New String(2) {}\r
Dim ColumnInfo As DataTable\r
+ Dim ColumnObj\r
+ Dim colname as String, colname0 as String, datatype as String\r
\r
- TableName = trim(request.querystring("id"))\r
- if app.OpenGrid(dbViewer) then\r
-\r
+ TableName = trim(request.querystring("tabid"))\r
+ if app.OpenGrid(dbViewer) AndAlso TableName<>"" then\r
+ \r
restrictions(2)=TableName\r
ColumnInfo = app.dbConnection.GetSchema ("Columns", restrictions)\r
\r
- Dim colname as String, colname0 as String, datatype as String\r
+ dbViewer.Tables.Add(new Rico.Table("[" & TableName & "]"))\r
+ dbViewer.requestParameters.Add("tabid",TableName) ' need to get the table name back so we can define columns every during every AJAX call\r
+\r
For Each colinfo As DataRow In ColumnInfo.Rows\r
colname=colinfo("COLUMN_NAME").ToString\r
datatype=colinfo("DATA_TYPE").ToString\r
if IsNothing(colname0) then colname0=colname\r
if IsNumeric(datatype) then datatype=ADOColType(datatype)\r
\r
- Dim ColumnObj as New Rico.Column()\r
if InStr(1,datatype,"binary",1) > 0 or left(datatype,3)="???" or datatype="image" then\r
+ ColumnObj = New Rico.FormulaCol()\r
ColumnObj.Formula = "'?'"\r
else\r
+ ColumnObj = New Rico.TableCol()\r
ColumnObj.ColName = colname\r
end if\r
ColumnObj.Heading=colname\r
ColumnObj.width=100\r
- if InStr(1,datatype,"DATETIME",1) > 0 then ColumnObj.DataType="datetime"\r
+ if InStr(1,datatype,"DATETIME",1) > 0 then ColumnObj.DataType=Rico.Column.DataTypeValues.date\r
dbViewer.AddColumn(ColumnObj)\r
Next\r
dbViewer.DefaultSort = colname0\r
- dbViewer.TableName = "[" & TableName & "]"\r
\r
end if\r
End Sub\r
<%@ Register TagPrefix="My" TagName="dbLib" Src="dbConnect.ascx" %>\r
<My:dbLib id='app' runat='server' />\r
\r
-\r
<script runat="server">\r
\r
Sub Page_Load(Sender As object, e As EventArgs)\r
Session.Timeout=60\r
- app.OpenGridForm(ex8)\r
+ app.OpenGridForm(shippers)\r
End Sub\r
\r
</script>\r
<Rico:LoadClient checkQueryString='true' runat='server' />\r
<link href="../demo.css" type="text/css" rel="stylesheet" />\r
\r
-<style type="text/css">
-div.ricoLG_cell {
- white-space:nowrap;
-}
-</style>
</head>\r
\r
\r
\r
<p><strong>Shippers Table</strong></p>
\r
-<Rico:LiveGridEdit runat='server' id='ex8' TableName='shippers' DefaultSort='ShipperID' frozenColumns='1'>\r
- <Rico:Column runat='server' heading='ID' width='50' ColName='ShipperID' EntryType='B' ColData='<auto>' />\r
- <Rico:Column runat='server' heading='Company Name' width='150' ColName='CompanyName' EntryType='B' ConfirmDeleteColumn='true' />\r
- <Rico:Column runat='server' heading='Phone Number' width='150' ColName='Phone' EntryType='B' />\r
+<Rico:LiveGridEdit runat='server' id='shippers' DefaultSort='ShipperID' frozenColumns='1'>\r
+ <Rico:Table runat='server' TblName='shippers' />\r
+ <Rico:EditCol runat='server' heading='ID' width='50' ColName='ShipperID' EntryType='I' ColData='<auto>' />\r
+ <Rico:EditCol runat='server' heading='Company Name' width='150' ColName='CompanyName' EntryType='B' ConfirmDeleteColumn='true' />\r
+ <Rico:EditCol runat='server' heading='Phone Number' width='150' ColName='Phone' EntryType='B' />\r
</Rico:LiveGridEdit>\r
\r
</body>\r
<Rico:LoadClient checkQueryString='true' runat='server' />\r
<link href="../demo.css" type="text/css" rel="stylesheet" />\r
\r
-<style type="text/css">\r
-div.ricoLG_cell {\r
- white-space:nowrap;\r
-}\r
-</style>\r
</head>\r
+\r
+\r
<body>\r
\r
<div id='explanation'>\r
</div>\r
<p><strong>Employees Table</strong></p>\r
\r
-<Rico:LiveGridEdit runat='server' id='emp' TableName='employees' DefaultSort='t.LastName,t.FirstName' menuEvent='click' frozenColumns='2' highlightElem='cursorRow'>\r
+<Rico:LiveGridEdit runat='server' id='emp' DefaultSort='t.LastName,t.FirstName' menuEvent='click' frozenColumns='2' highlightElem='cursorRow'>\r
+ <Rico:Table runat='server' TblName='employees' />\r
<Rico:CalendarControl runat='server' id='Cal' icon='rico-icon rico-calarrow' />\r
- <Rico:Column runat='server' ColName='EmployeeID' heading='Emp#' width='60' EntryType='B' ColData='<auto>' />\r
- <Rico:Column runat='server' ColName='LastName' heading='Last Name' width='100' EntryType='B' />\r
- <Rico:Column runat='server' ColName='FirstName' heading='First Name' width='100' EntryType='B' />\r
- <Rico:Column runat='server' ColName='Title' heading='Title' width='120' EntryType='T' />\r
- <Rico:Column runat='server' ColName='TitleOfCourtesy' heading='Title (Courtesy)' width='90' EntryType='T' />\r
- <Rico:Column runat='server' ColName='BirthDate' heading='Birth Date' width='100' datatype='date' EntryType='D' SelectCtl='Cal' />\r
- <Rico:Column runat='server' ColName='HireDate' heading='Hire Date' width='100' datatype='date' EntryType='D' ColData='Today' SelectCtl='Cal' />\r
- <Rico:Column runat='server' ColName='Address' heading='Address' width='100' EntryType='T' />\r
- <Rico:Column runat='server' ColName='City' heading='City' width='100' EntryType='T' />\r
- <Rico:Column runat='server' ColName='Region' heading='Region' width='100' EntryType='N' />\r
- <Rico:Column runat='server' ColName='PostalCode' heading='Postal Code' width='100' EntryType='T' />\r
- <Rico:Column runat='server' ColName='Country' heading='Country' width='100' EntryType='N' />\r
- <Rico:Column runat='server' ColName='HomePhone' heading='Home Phone' width='100' EntryType='T' />\r
- <Rico:Column runat='server' ColName='Extension' heading='Extension' width='100' EntryType='T' />\r
- <Rico:Column runat='server' ColName='ReportsTo' heading='ReportsTo' width='100' EntryType='SL' id='ReportsTo' />\r
+ <Rico:EditCol runat='server' ColName='EmployeeID' heading='Emp#' width='60' EntryType='B' ColData='<auto>' />\r
+ <Rico:EditCol runat='server' ColName='LastName' heading='Last Name' width='100' EntryType='B' />\r
+ <Rico:EditCol runat='server' ColName='FirstName' heading='First Name' width='100' EntryType='B' />\r
+ <Rico:EditCol runat='server' ColName='Title' heading='Title' width='120' EntryType='T' />\r
+ <Rico:EditCol runat='server' ColName='TitleOfCourtesy' heading='Title (Courtesy)' width='90' EntryType='T' />\r
+ <Rico:EditCol runat='server' ColName='BirthDate' heading='Birth Date' width='100' datatype='date' EntryType='D' SelectCtl='Cal' />\r
+ <Rico:EditCol runat='server' ColName='HireDate' heading='Hire Date' width='100' datatype='date' EntryType='D' ColData='Today' SelectCtl='Cal' />\r
+ <Rico:EditCol runat='server' ColName='Address' heading='Address' width='100' EntryType='T' />\r
+ <Rico:EditCol runat='server' ColName='City' heading='City' width='100' EntryType='T' />\r
+ <Rico:EditCol runat='server' ColName='Region' heading='Region' width='100' EntryType='N' />\r
+ <Rico:EditCol runat='server' ColName='PostalCode' heading='Postal Code' width='100' EntryType='T' />\r
+ <Rico:EditCol runat='server' ColName='Country' heading='Country' width='100' EntryType='N' />\r
+ <Rico:EditCol runat='server' ColName='HomePhone' heading='Home Phone' width='100' EntryType='T' />\r
+ <Rico:EditCol runat='server' ColName='Extension' heading='Extension' width='100' EntryType='T' />\r
+ <Rico:EditCol runat='server' ColName='ReportsTo' heading='ReportsTo' width='100' EntryType='SL' id='ReportsTo' />\r
</Rico:LiveGridEdit>\r
\r
</body>\r
<Rico:LoadClient checkQueryString='true' runat='server' />\r
<link href="../demo.css" type="text/css" rel="stylesheet" />\r
\r
-<script type='text/javascript'>\r
-Rico.onLoad( function() {\r
- //alert('We are stopping here, at the start of the onLoad event, to show you that the grid is populated with data from a regular HTML table. This is what browsers with javascript disabled would display.');\r
- var opts = {\r
- menuEvent : 'click',\r
- frozenColumns : 1,\r
- highlightElem: 'cursorRow',\r
- defaultWidth : 90,\r
- useUnformattedColWidth: false,\r
- columnSpecs : [{width:200},'specQty','specQty','specQty','specQty','specQty']\r
- };\r
- var ex1=new Rico.LiveGrid ('population', new Rico.Buffer.Base(document.getElementById('population').tBodies[0]), opts);\r
- ex1.menu=new Rico.GridMenu({});\r
-});\r
-</script>\r
-\r
</head>\r
\r
<body>\r
<em>World Population Prospects: The 2008 Revision. Highlights.</em> New York: United Nations. </p> \r
</div>\r
\r
-<p class="ricoBookmark"><span id="population_bookmark"> </span></p>\r
-<table class="ricoLiveGrid" id="population">\r
-<thead>\r
- <tr> <td class='ricoFrozen'></td> <td colspan=5>Population (thousands)</td> </tr>\r
- <tr> <td class='ricoFrozen'>Country or area</td> <td>1950</td> <td>2009</td> <td>2015</td> <td>2025</td> <td>2050</td> </tr>\r
-</thead>\r
-<tbody>\r
- <tr> <td>Afghanistan</td> <td>8151</td> <td>28150</td> <td>34246</td> <td>44970</td> <td>73938</td> </tr>\r
- <tr> <td>Albania</td> <td>1215</td> <td>3155</td> <td>3256</td> <td>3395</td> <td>3303</td> </tr>\r
- <tr> <td>Algeria</td> <td>8753</td> <td>34895</td> <td>38088</td> <td>42882</td> <td>49610</td> </tr>\r
- <tr> <td>American Samoa</td> <td>19</td> <td>67</td> <td>74</td> <td>86</td> <td>107</td> </tr>\r
- <tr> <td>Andorra</td> <td>6</td> <td>86</td> <td>93</td> <td>107</td> <td>137</td> </tr>\r
- <tr> <td>Angola</td> <td>4148</td> <td>18498</td> <td>21690</td> <td>27441</td> <td>42267</td> </tr>\r
- <tr> <td>Anguilla</td> <td>5</td> <td>15</td> <td>17</td> <td>18</td> <td>20</td> </tr>\r
- <tr> <td>Antigua and Barbuda</td> <td>46</td> <td>88</td> <td>93</td> <td>101</td> <td>112</td> </tr>\r
- <tr> <td>Argentina</td> <td>17150</td> <td>40276</td> <td>42548</td> <td>45883</td> <td>50943</td> </tr>\r
- <tr> <td>Armenia</td> <td>1354</td> <td>3083</td> <td>3139</td> <td>3181</td> <td>3018</td> </tr>\r
- <tr> <td>Aruba</td> <td>38</td> <td>107</td> <td>109</td> <td>112</td> <td>106</td> </tr>\r
- <tr> <td>Australia</td> <td>8219</td> <td>21293</td> <td>22607</td> <td>24703</td> <td>28724</td> </tr>\r
- <tr> <td>Austria</td> <td>6936</td> <td>8364</td> <td>8467</td> <td>8600</td> <td>8515</td> </tr>\r
- <tr> <td>Azerbaijan</td> <td>2896</td> <td>8832</td> <td>9426</td> <td>10128</td> <td>10579</td> </tr>\r
- <tr> <td>Bahamas</td> <td>79</td> <td>342</td> <td>366</td> <td>402</td> <td>455</td> </tr>\r
- <tr> <td>Bahrain</td> <td>116</td> <td>791</td> <td>882</td> <td>1021</td> <td>1277</td> </tr>\r
- <tr> <td>Bangladesh</td> <td>43595</td> <td>162221</td> <td>175217</td> <td>195012</td> <td>222495</td> </tr>\r
- <tr> <td>Barbados</td> <td>211</td> <td>256</td> <td>260</td> <td>262</td> <td>237</td> </tr>\r
- <tr> <td>Belarus</td> <td>7745</td> <td>9634</td> <td>9355</td> <td>8851</td> <td>7275</td> </tr>\r
- <tr> <td>Belgium</td> <td>8628</td> <td>10647</td> <td>10878</td> <td>11191</td> <td>11493</td> </tr>\r
- <tr> <td>Belize</td> <td>69</td> <td>307</td> <td>344</td> <td>404</td> <td>506</td> </tr>\r
- <tr> <td>Benin</td> <td>2050</td> <td>8935</td> <td>10647</td> <td>13767</td> <td>21982</td> </tr>\r
- <tr> <td>Bermuda</td> <td>37</td> <td>65</td> <td>65</td> <td>66</td> <td>63</td> </tr>\r
- <tr> <td>Bhutan</td> <td>168</td> <td>697</td> <td>770</td> <td>865</td> <td>1013</td> </tr>\r
- <tr> <td>Bolivia</td> <td>2714</td> <td>9863</td> <td>10854</td> <td>12368</td> <td>14908</td> </tr>\r
- <tr> <td>Bosnia and Herzegovina</td> <td>2661</td> <td>3767</td> <td>3727</td> <td>3608</td> <td>3008</td> </tr>\r
- <tr> <td>Botswana</td> <td>413</td> <td>1950</td> <td>2106</td> <td>2337</td> <td>2758</td> </tr>\r
- <tr> <td>Brazil</td> <td>53975</td> <td>193734</td> <td>202866</td> <td>213802</td> <td>218512</td> </tr>\r
- <tr> <td>British Virgin Islands</td> <td>7</td> <td>23</td> <td>24</td> <td>26</td> <td>28</td> </tr>\r
- <tr> <td>Brunei Darussalam</td> <td>48</td> <td>400</td> <td>443</td> <td>513</td> <td>658</td> </tr>\r
- <tr> <td>Bulgaria</td> <td>7251</td> <td>7545</td> <td>7263</td> <td>6752</td> <td>5392</td> </tr>\r
- <tr> <td>Burkina Faso</td> <td>4080</td> <td>15757</td> <td>19013</td> <td>24837</td> <td>40830</td> </tr>\r
- <tr> <td>Burundi</td> <td>2456</td> <td>8303</td> <td>9413</td> <td>11161</td> <td>14846</td> </tr>\r
- <tr> <td>Cambodia</td> <td>4346</td> <td>14805</td> <td>16357</td> <td>18973</td> <td>23795</td> </tr>\r
- <tr> <td>Cameroon</td> <td>4466</td> <td>19522</td> <td>22169</td> <td>26478</td> <td>36736</td> </tr>\r
- <tr> <td>Canada</td> <td>13737</td> <td>33573</td> <td>35493</td> <td>38659</td> <td>44414</td> </tr>\r
- <tr> <td>Cape Verde</td> <td>146</td> <td>506</td> <td>548</td> <td>616</td> <td>703</td> </tr>\r
- <tr> <td>Cayman Islands</td> <td>7</td> <td>56</td> <td>59</td> <td>63</td> <td>66</td> </tr>\r
- <tr> <td>Central African Republic</td> <td>1327</td> <td>4422</td> <td>4927</td> <td>5747</td> <td>7603</td> </tr>\r
- <tr> <td>Chad</td> <td>2429</td> <td>11206</td> <td>13120</td> <td>16906</td> <td>27776</td> </tr>\r
- <tr> <td>Channel Islands</td> <td>102</td> <td>150</td> <td>151</td> <td>152</td> <td>144</td> </tr>\r
- <tr> <td>Chile</td> <td>6082</td> <td>16970</td> <td>17926</td> <td>19266</td> <td>20657</td> </tr>\r
- <tr> <td>China</td> <td>544951</td> <td>1345751</td> <td>1395998</td> <td>1453140</td> <td>1417045</td> </tr>\r
- <tr> <td>China, Hong Kong SAR</td> <td>1974</td> <td>7022</td> <td>7398</td> <td>7969</td> <td>8623</td> </tr>\r
- <tr> <td>China, Macao SAR</td> <td>190</td> <td>538</td> <td>568</td> <td>603</td> <td>593</td> </tr>\r
- <tr> <td>Colombia</td> <td>12000</td> <td>45660</td> <td>49385</td> <td>54920</td> <td>62877</td> </tr>\r
- <tr> <td>Comoros</td> <td>156</td> <td>676</td> <td>767</td> <td>907</td> <td>1226</td> </tr>\r
- <tr> <td>Congo</td> <td>808</td> <td>3683</td> <td>4225</td> <td>5094</td> <td>6863</td> </tr>\r
- <tr> <td>Cook Islands</td> <td>15</td> <td>20</td> <td>20</td> <td>21</td> <td>24</td> </tr>\r
- <tr> <td>Costa Rica</td> <td>966</td> <td>4579</td> <td>4957</td> <td>5521</td> <td>6373</td> </tr>\r
- <tr> <td>Côte d'Ivoire</td> <td>2505</td> <td>21075</td> <td>24210</td> <td>29738</td> <td>43373</td> </tr>\r
- <tr> <td>Croatia</td> <td>3850</td> <td>4416</td> <td>4370</td> <td>4254</td> <td>3825</td> </tr>\r
- <tr> <td>Cuba</td> <td>5920</td> <td>11204</td> <td>11213</td> <td>11148</td> <td>9725</td> </tr>\r
- <tr> <td>Cyprus</td> <td>494</td> <td>871</td> <td>925</td> <td>1014</td> <td>1175</td> </tr>\r
- <tr> <td>Czech Republic</td> <td>8925</td> <td>10369</td> <td>10510</td> <td>10573</td> <td>10294</td> </tr>\r
- <tr> <td>Dem. People's Rep. of Korea</td> <td>9737</td> <td>23906</td> <td>24399</td> <td>25128</td> <td>24562</td> </tr>\r
- <tr> <td>Dem. Republic of the Congo</td> <td>12184</td> <td>66020</td> <td>77419</td> <td>98123</td> <td>147512</td> </tr>\r
- <tr> <td>Denmark</td> <td>4271</td> <td>5470</td> <td>5523</td> <td>5590</td> <td>5551</td> </tr>\r
- <tr> <td>Djibouti</td> <td>62</td> <td>864</td> <td>953</td> <td>1111</td> <td>1469</td> </tr>\r
- <tr> <td>Dominica</td> <td>51</td> <td>67</td> <td>67</td> <td>68</td> <td>66</td> </tr>\r
- <tr> <td>Dominican Republic</td> <td>2427</td> <td>10090</td> <td>10867</td> <td>11973</td> <td>13441</td> </tr>\r
- <tr> <td>Ecuador</td> <td>3387</td> <td>13625</td> <td>14596</td> <td>16074</td> <td>17989</td> </tr>\r
- <tr> <td>Egypt</td> <td>21514</td> <td>82999</td> <td>91778</td> <td>104970</td> <td>129533</td> </tr>\r
- <tr> <td>El Salvador</td> <td>2200</td> <td>6163</td> <td>6383</td> <td>6895</td> <td>7882</td> </tr>\r
- <tr> <td>Equatorial Guinea</td> <td>226</td> <td>676</td> <td>781</td> <td>971</td> <td>1445</td> </tr>\r
- <tr> <td>Eritrea</td> <td>1141</td> <td>5073</td> <td>6009</td> <td>7404</td> <td>10787</td> </tr>\r
- <tr> <td>Estonia</td> <td>1101</td> <td>1340</td> <td>1337</td> <td>1321</td> <td>1233</td> </tr>\r
- <tr> <td>Ethiopia</td> <td>18434</td> <td>82825</td> <td>96237</td> <td>119822</td> <td>173811</td> </tr>\r
- <tr> <td>Faeroe Islands</td> <td>32</td> <td>50</td> <td>52</td> <td>55</td> <td>58</td> </tr>\r
- <tr> <td>Falkland Islands (Malvinas)</td> <td>2</td> <td>3</td> <td>3</td> <td>3</td> <td>3</td> </tr>\r
- <tr> <td>Fiji</td> <td>289</td> <td>849</td> <td>874</td> <td>905</td> <td>910</td> </tr>\r
- <tr> <td>Finland</td> <td>4009</td> <td>5326</td> <td>5432</td> <td>5533</td> <td>5445</td> </tr>\r
- <tr> <td>France</td> <td>41832</td> <td>62343</td> <td>63900</td> <td>65769</td> <td>67668</td> </tr>\r
- <tr> <td>French Guiana</td> <td>25</td> <td>226</td> <td>261</td> <td>323</td> <td>462</td> </tr>\r
- <tr> <td>French Polynesia</td> <td>61</td> <td>269</td> <td>289</td> <td>318</td> <td>354</td> </tr>\r
- <tr> <td>Gabon</td> <td>469</td> <td>1475</td> <td>1639</td> <td>1915</td> <td>2471</td> </tr>\r
- <tr> <td>Gambia</td> <td>258</td> <td>1705</td> <td>1985</td> <td>2478</td> <td>3763</td> </tr>\r
- <tr> <td>Georgia</td> <td>3527</td> <td>4260</td> <td>4084</td> <td>3888</td> <td>3267</td> </tr>\r
- <tr> <td>Germany</td> <td>68376</td> <td>82167</td> <td>81346</td> <td>79258</td> <td>70504</td> </tr>\r
- <tr> <td>Ghana</td> <td>4981</td> <td>23837</td> <td>26925</td> <td>32233</td> <td>45213</td> </tr>\r
- <tr> <td>Gibraltar</td> <td>20</td> <td>31</td> <td>31</td> <td>32</td> <td>30</td> </tr>\r
- <tr> <td>Greece</td> <td>7566</td> <td>11161</td> <td>11261</td> <td>11274</td> <td>10939</td> </tr>\r
- <tr> <td>Greenland</td> <td>23</td> <td>57</td> <td>57</td> <td>56</td> <td>50</td> </tr>\r
- <tr> <td>Grenada</td> <td>77</td> <td>104</td> <td>107</td> <td>109</td> <td>97</td> </tr>\r
- <tr> <td>Guadeloupe</td> <td>210</td> <td>465</td> <td>476</td> <td>489</td> <td>477</td> </tr>\r
- <tr> <td>Guam</td> <td>60</td> <td>178</td> <td>191</td> <td>211</td> <td>242</td> </tr>\r
- <tr> <td>Guatemala</td> <td>3146</td> <td>14027</td> <td>16227</td> <td>19927</td> <td>27480</td> </tr>\r
- <tr> <td>Guinea</td> <td>2619</td> <td>10069</td> <td>11844</td> <td>15158</td> <td>23975</td> </tr>\r
- <tr> <td>Guinea-Bissau</td> <td>518</td> <td>1611</td> <td>1848</td> <td>2296</td> <td>3555</td> </tr>\r
- <tr> <td>Guyana</td> <td>423</td> <td>762</td> <td>754</td> <td>732</td> <td>558</td> </tr>\r
- <tr> <td>Haiti</td> <td>3221</td> <td>10033</td> <td>10957</td> <td>12476</td> <td>15485</td> </tr>\r
- <tr> <td>Holy See</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr>\r
- <tr> <td>Honduras</td> <td>1487</td> <td>7466</td> <td>8386</td> <td>9844</td> <td>12402</td> </tr>\r
- <tr> <td>Hungary</td> <td>9338</td> <td>9993</td> <td>9874</td> <td>9647</td> <td>8934</td> </tr>\r
- <tr> <td>Iceland</td> <td>143</td> <td>323</td> <td>353</td> <td>384</td> <td>407</td> </tr>\r
- <tr> <td>India</td> <td>371857</td> <td>1198003</td> <td>1294192</td> <td>1431272</td> <td>1613800</td> </tr>\r
- <tr> <td>Indonesia</td> <td>77152</td> <td>229965</td> <td>244191</td> <td>263287</td> <td>288110</td> </tr>\r
- <tr> <td>Iran (Islamic Republic of)</td> <td>16913</td> <td>74196</td> <td>79454</td> <td>87134</td> <td>96975</td> </tr>\r
- <tr> <td>Iraq</td> <td>5719</td> <td>30747</td> <td>35884</td> <td>44692</td> <td>63995</td> </tr>\r
- <tr> <td>Ireland</td> <td>2969</td> <td>4515</td> <td>4886</td> <td>5370</td> <td>6295</td> </tr>\r
- <tr> <td>Isle of Man</td> <td>55</td> <td>80</td> <td>81</td> <td>80</td> <td>75</td> </tr>\r
- <tr> <td>Israel</td> <td>1258</td> <td>7170</td> <td>7823</td> <td>8769</td> <td>10649</td> </tr>\r
- <tr> <td>Italy</td> <td>46367</td> <td>59870</td> <td>60604</td> <td>60018</td> <td>57066</td> </tr>\r
- <tr> <td>Jamaica</td> <td>1403</td> <td>2719</td> <td>2786</td> <td>2866</td> <td>2683</td> </tr>\r
- <tr> <td>Japan</td> <td>82824</td> <td>127156</td> <td>125791</td> <td>120793</td> <td>101659</td> </tr>\r
- <tr> <td>Jordan</td> <td>472</td> <td>6316</td> <td>6957</td> <td>8088</td> <td>10241</td> </tr>\r
- <tr> <td>Kazakhstan</td> <td>6703</td> <td>15637</td> <td>16289</td> <td>17025</td> <td>17848</td> </tr>\r
- <tr> <td>Kenya</td> <td>6077</td> <td>39802</td> <td>46433</td> <td>57573</td> <td>85410</td> </tr>\r
- <tr> <td>Kiribati</td> <td>26</td> <td>98</td> <td>107</td> <td>123</td> <td>151</td> </tr>\r
- <tr> <td>Kuwait</td> <td>152</td> <td>2985</td> <td>3378</td> <td>3988</td> <td>5240</td> </tr>\r
- <tr> <td>Kyrgyzstan</td> <td>1740</td> <td>5482</td> <td>5877</td> <td>6378</td> <td>6882</td> </tr>\r
- <tr> <td>Lao People's Dem. Republic</td> <td>1666</td> <td>6320</td> <td>7028</td> <td>8273</td> <td>10744</td> </tr>\r
- <tr> <td>Latvia</td> <td>1949</td> <td>2249</td> <td>2197</td> <td>2101</td> <td>1854</td> </tr>\r
- <tr> <td>Lebanon</td> <td>1443</td> <td>4224</td> <td>4426</td> <td>4736</td> <td>5033</td> </tr>\r
- <tr> <td>Lesotho</td> <td>734</td> <td>2067</td> <td>2168</td> <td>2306</td> <td>2491</td> </tr>\r
- <tr> <td>Liberia</td> <td>824</td> <td>3955</td> <td>4665</td> <td>5858</td> <td>8841</td> </tr>\r
- <tr> <td>Libyan Arab Jamahiriya</td> <td>1029</td> <td>6420</td> <td>7158</td> <td>8144</td> <td>9819</td> </tr>\r
- <tr> <td>Liechtenstein</td> <td>14</td> <td>36</td> <td>38</td> <td>40</td> <td>45</td> </tr>\r
- <tr> <td>Lithuania</td> <td>2567</td> <td>3287</td> <td>3143</td> <td>2985</td> <td>2579</td> </tr>\r
- <tr> <td>Luxembourg</td> <td>296</td> <td>486</td> <td>520</td> <td>582</td> <td>733</td> </tr>\r
- <tr> <td>Madagascar</td> <td>4084</td> <td>19625</td> <td>22853</td> <td>28595</td> <td>42693</td> </tr>\r
- <tr> <td>Malawi</td> <td>2881</td> <td>15263</td> <td>17998</td> <td>23194</td> <td>36575</td> </tr>\r
- <tr> <td>Malaysia</td> <td>6110</td> <td>27468</td> <td>30041</td> <td>33770</td> <td>39664</td> </tr>\r
- <tr> <td>Maldives</td> <td>82</td> <td>309</td> <td>338</td> <td>384</td> <td>455</td> </tr>\r
- <tr> <td>Mali</td> <td>4268</td> <td>13010</td> <td>14993</td> <td>18603</td> <td>28260</td> </tr>\r
- <tr> <td>Malta</td> <td>312</td> <td>409</td> <td>417</td> <td>426</td> <td>413</td> </tr>\r
- <tr> <td>Marshall Islands</td> <td>13</td> <td>62</td> <td>70</td> <td>79</td> <td>92</td> </tr>\r
- <tr> <td>Martinique</td> <td>222</td> <td>405</td> <td>411</td> <td>418</td> <td>393</td> </tr>\r
- <tr> <td>Mauritania</td> <td>651</td> <td>3291</td> <td>3732</td> <td>4443</td> <td>6061</td> </tr>\r
- <tr> <td>Mauritius</td> <td>493</td> <td>1288</td> <td>1337</td> <td>1400</td> <td>1426</td> </tr>\r
- <tr> <td>Mayotte</td> <td>15</td> <td>194</td> <td>224</td> <td>277</td> <td>386</td> </tr>\r
- <tr> <td>Mexico</td> <td>27741</td> <td>109610</td> <td>115528</td> <td>123366</td> <td>128964</td> </tr>\r
- <tr> <td>Micronesia (Fed. States of)</td> <td>32</td> <td>111</td> <td>114</td> <td>122</td> <td>128</td> </tr>\r
- <tr> <td>Moldova (Republic of)</td> <td>2341</td> <td>3604</td> <td>3462</td> <td>3291</td> <td>2734</td> </tr>\r
- <tr> <td>Monaco</td> <td>20</td> <td>33</td> <td>33</td> <td>35</td> <td>38</td> </tr>\r
- <tr> <td>Mongolia</td> <td>761</td> <td>2671</td> <td>2855</td> <td>3134</td> <td>3446</td> </tr>\r
- <tr> <td>Montenegro</td> <td>399</td> <td>624</td> <td>627</td> <td>633</td> <td>618</td> </tr>\r
- <tr> <td>Montserrat</td> <td>14</td> <td>6</td> <td>6</td> <td>7</td> <td>7</td> </tr>\r
- <tr> <td>Morocco</td> <td>8953</td> <td>31993</td> <td>34330</td> <td>37865</td> <td>42583</td> </tr>\r
- <tr> <td>Mozambique</td> <td>6442</td> <td>22894</td> <td>25957</td> <td>31190</td> <td>44148</td> </tr>\r
- <tr> <td>Myanmar</td> <td>17158</td> <td>50020</td> <td>53087</td> <td>57585</td> <td>63373</td> </tr>\r
- <tr> <td>Namibia</td> <td>485</td> <td>2171</td> <td>2412</td> <td>2810</td> <td>3588</td> </tr>\r
- <tr> <td>Nauru</td> <td>3</td> <td>10</td> <td>11</td> <td>11</td> <td>11</td> </tr>\r
- <tr> <td>Nepal</td> <td>8126</td> <td>29331</td> <td>32503</td> <td>38031</td> <td>49028</td> </tr>\r
- <tr> <td>Netherlands</td> <td>10114</td> <td>16592</td> <td>16915</td> <td>17348</td> <td>17399</td> </tr>\r
- <tr> <td>Netherlands Antilles</td> <td>112</td> <td>198</td> <td>207</td> <td>210</td> <td>192</td> </tr>\r
- <tr> <td>New Caledonia</td> <td>65</td> <td>250</td> <td>271</td> <td>304</td> <td>362</td> </tr>\r
- <tr> <td>New Zealand</td> <td>1908</td> <td>4266</td> <td>4492</td> <td>4831</td> <td>5349</td> </tr>\r
- <tr> <td>Nicaragua</td> <td>1295</td> <td>5743</td> <td>6265</td> <td>7058</td> <td>8143</td> </tr>\r
- <tr> <td>Niger</td> <td>2462</td> <td>15290</td> <td>19150</td> <td>27388</td> <td>58216</td> </tr>\r
- <tr> <td>Nigeria</td> <td>36680</td> <td>154729</td> <td>175928</td> <td>210057</td> <td>289083</td> </tr>\r
- <tr> <td>Niue</td> <td>5</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr>\r
- <tr> <td>Northern Mariana Islands</td> <td>7</td> <td>87</td> <td>96</td> <td>111</td> <td>151</td> </tr>\r
- <tr> <td>Norway</td> <td>3265</td> <td>4812</td> <td>5036</td> <td>5365</td> <td>5947</td> </tr>\r
- <tr> <td>Occupied Palestinian Territory</td> <td>1005</td> <td>4277</td> <td>5090</td> <td>6553</td> <td>10265</td> </tr>\r
- <tr> <td>Oman</td> <td>456</td> <td>2845</td> <td>3198</td> <td>3782</td> <td>4878</td> </tr>\r
- <tr> <td>Pakistan</td> <td>41177</td> <td>180808</td> <td>205504</td> <td>246286</td> <td>335195</td> </tr>\r
- <tr> <td>Palau</td> <td>7</td> <td>20</td> <td>21</td> <td>23</td> <td>26</td> </tr>\r
- <tr> <td>Panama</td> <td>860</td> <td>3454</td> <td>3773</td> <td>4267</td> <td>5092</td> </tr>\r
- <tr> <td>Papua New Guinea</td> <td>1798</td> <td>6732</td> <td>7678</td> <td>9265</td> <td>12871</td> </tr>\r
- <tr> <td>Paraguay</td> <td>1473</td> <td>6349</td> <td>7007</td> <td>8026</td> <td>9867</td> </tr>\r
- <tr> <td>Peru</td> <td>7632</td> <td>29165</td> <td>31197</td> <td>34528</td> <td>39776</td> </tr>\r
- <tr> <td>Philippines</td> <td>19996</td> <td>91983</td> <td>101734</td> <td>117270</td> <td>146156</td> </tr>\r
- <tr> <td>Pitcairn</td> <td>0</td> <td>0</td> <td>0</td> <td>0</td> <td>0</td> </tr>\r
- <tr> <td>Poland</td> <td>24824</td> <td>38074</td> <td>37788</td> <td>36964</td> <td>32013</td> </tr>\r
- <tr> <td>Portugal</td> <td>8405</td> <td>10707</td> <td>10787</td> <td>10706</td> <td>10015</td> </tr>\r
- <tr> <td>Puerto Rico</td> <td>2218</td> <td>3982</td> <td>4074</td> <td>4176</td> <td>4103</td> </tr>\r
- <tr> <td>Qatar</td> <td>25</td> <td>1409</td> <td>1630</td> <td>1848</td> <td>2316</td> </tr>\r
- <tr> <td>Republic of Korea</td> <td>19211</td> <td>48333</td> <td>49153</td> <td>49484</td> <td>44077</td> </tr>\r
- <tr> <td>Réunion</td> <td>248</td> <td>827</td> <td>886</td> <td>973</td> <td>1096</td> </tr>\r
- <tr> <td>Romania</td> <td>16311</td> <td>21275</td> <td>20787</td> <td>19961</td> <td>17279</td> </tr>\r
- <tr> <td>Russian Federation</td> <td>102702</td> <td>140874</td> <td>137983</td> <td>132345</td> <td>116097</td> </tr>\r
- <tr> <td>Rwanda</td> <td>2162</td> <td>9998</td> <td>11743</td> <td>14676</td> <td>22082</td> </tr>\r
- <tr> <td>Saint Helena</td> <td>5</td> <td>4</td> <td>4</td> <td>5</td> <td>5</td> </tr>\r
- <tr> <td>Saint Kitts and Nevis</td> <td>46</td> <td>52</td> <td>56</td> <td>61</td> <td>69</td> </tr>\r
- <tr> <td>Saint Lucia</td> <td>83</td> <td>172</td> <td>182</td> <td>198</td> <td>217</td> </tr>\r
- <tr> <td>Saint Pierre and Miquelon</td> <td>5</td> <td>6</td> <td>6</td> <td>6</td> <td>6</td> </tr>\r
- <tr> <td>St. Vincent and the Grenadines</td> <td>67</td> <td>109</td> <td>110</td> <td>111</td> <td>119</td> </tr>\r
- <tr> <td>Samoa</td> <td>82</td> <td>179</td> <td>181</td> <td>188</td> <td>192</td> </tr>\r
- <tr> <td>San Marino</td> <td>13</td> <td>31</td> <td>32</td> <td>33</td> <td>33</td> </tr>\r
- <tr> <td>Sao Tome and Principe</td> <td>60</td> <td>163</td> <td>180</td> <td>216</td> <td>296</td> </tr>\r
- <tr> <td>Saudi Arabia</td> <td>3201</td> <td>25721</td> <td>28933</td> <td>34176</td> <td>43658</td> </tr>\r
- <tr> <td>Senegal</td> <td>2416</td> <td>12534</td> <td>14526</td> <td>17861</td> <td>26102</td> </tr>\r
- <tr> <td>Serbia</td> <td>6732</td> <td>9850</td> <td>9828</td> <td>9720</td> <td>9193</td> </tr>\r
- <tr> <td>Seychelles</td> <td>36</td> <td>84</td> <td>86</td> <td>91</td> <td>97</td> </tr>\r
- <tr> <td>Sierra Leone</td> <td>1944</td> <td>5696</td> <td>6557</td> <td>8112</td> <td>12446</td> </tr>\r
- <tr> <td>Singapore</td> <td>1022</td> <td>4737</td> <td>5059</td> <td>5362</td> <td>5221</td> </tr>\r
- <tr> <td>Slovakia</td> <td>3463</td> <td>5406</td> <td>5437</td> <td>5413</td> <td>4917</td> </tr>\r
- <tr> <td>Slovenia</td> <td>1473</td> <td>2020</td> <td>2044</td> <td>2050</td> <td>1954</td> </tr>\r
- <tr> <td>Solomon Islands</td> <td>90</td> <td>523</td> <td>599</td> <td>725</td> <td>1007</td> </tr>\r
- <tr> <td>Somalia</td> <td>2264</td> <td>9133</td> <td>10731</td> <td>13922</td> <td>23522</td> </tr>\r
- <tr> <td>South Africa</td> <td>13683</td> <td>50110</td> <td>51684</td> <td>53766</td> <td>56802</td> </tr>\r
- <tr> <td>Spain</td> <td>28009</td> <td>44904</td> <td>47203</td> <td>49265</td> <td>51260</td> </tr>\r
- <tr> <td>Sri Lanka</td> <td>8241</td> <td>20238</td> <td>21167</td> <td>22033</td> <td>21705</td> </tr>\r
- <tr> <td>Sudan</td> <td>9190</td> <td>42272</td> <td>47730</td> <td>56688</td> <td>75884</td> </tr>\r
- <tr> <td>Suriname</td> <td>215</td> <td>520</td> <td>547</td> <td>586</td> <td>619</td> </tr>\r
- <tr> <td>Swaziland</td> <td>273</td> <td>1185</td> <td>1287</td> <td>1455</td> <td>1749</td> </tr>\r
- <tr> <td>Sweden</td> <td>7014</td> <td>9249</td> <td>9498</td> <td>9915</td> <td>10571</td> </tr>\r
- <tr> <td>Switzerland</td> <td>4693</td> <td>7568</td> <td>7736</td> <td>8020</td> <td>8514</td> </tr>\r
- <tr> <td>Syrian Arab Republic</td> <td>3536</td> <td>21906</td> <td>24494</td> <td>28592</td> <td>36911</td> </tr>\r
- <tr> <td>Tajikistan</td> <td>1532</td> <td>6952</td> <td>7761</td> <td>9075</td> <td>11111</td> </tr>\r
- <tr> <td>TFYR Macedonia</td> <td>1230</td> <td>2042</td> <td>2045</td> <td>2037</td> <td>1857</td> </tr>\r
- <tr> <td>Thailand</td> <td>20607</td> <td>67764</td> <td>69939</td> <td>72628</td> <td>73361</td> </tr>\r
- <tr> <td>Timor-Leste</td> <td>433</td> <td>1134</td> <td>1385</td> <td>1869</td> <td>3217</td> </tr>\r
- <tr> <td>Togo</td> <td>1329</td> <td>6619</td> <td>7607</td> <td>9282</td> <td>13196</td> </tr>\r
- <tr> <td>Tokelau</td> <td>2</td> <td>1</td> <td>1</td> <td>1</td> <td>1</td> </tr>\r
- <tr> <td>Tonga</td> <td>47</td> <td>104</td> <td>105</td> <td>112</td> <td>123</td> </tr>\r
- <tr> <td>Trinidad and Tobago</td> <td>636</td> <td>1339</td> <td>1368</td> <td>1388</td> <td>1278</td> </tr>\r
- <tr> <td>Tunisia</td> <td>3530</td> <td>10272</td> <td>10884</td> <td>11797</td> <td>12711</td> </tr>\r
- <tr> <td>Turkey</td> <td>21484</td> <td>74816</td> <td>79966</td> <td>87364</td> <td>97389</td> </tr>\r
- <tr> <td>Turkmenistan</td> <td>1211</td> <td>5110</td> <td>5509</td> <td>6072</td> <td>6796</td> </tr>\r
- <tr> <td>Turks and Caicos Islands</td> <td>5</td> <td>33</td> <td>35</td> <td>38</td> <td>40</td> </tr>\r
- <tr> <td>Tuvalu</td> <td>5</td> <td>10</td> <td>10</td> <td>11</td> <td>11</td> </tr>\r
- <tr> <td>Uganda</td> <td>5158</td> <td>32710</td> <td>39710</td> <td>53406</td> <td>91271</td> </tr>\r
- <tr> <td>Ukraine</td> <td>37298</td> <td>45708</td> <td>44165</td> <td>41617</td> <td>35026</td> </tr>\r
- <tr> <td>United Arab Emirates</td> <td>70</td> <td>4599</td> <td>5193</td> <td>6109</td> <td>8253</td> </tr>\r
- <tr> <td>United Kingdom</td> <td>50616</td> <td>61565</td> <td>63528</td> <td>66601</td> <td>72365</td> </tr>\r
- <tr> <td>United Republic of Tanzania</td> <td>7650</td> <td>43739</td> <td>52109</td> <td>67394</td> <td>109450</td> </tr>\r
- <tr> <td>United States of America</td> <td>157813</td> <td>314659</td> <td>332334</td> <td>358735</td> <td>403932</td> </tr>\r
- <tr> <td>United States Virgin Islands</td> <td>27</td> <td>110</td> <td>108</td> <td>103</td> <td>75</td> </tr>\r
- <tr> <td>Uruguay</td> <td>2239</td> <td>3361</td> <td>3430</td> <td>3546</td> <td>3637</td> </tr>\r
- <tr> <td>Uzbekistan</td> <td>6314</td> <td>27488</td> <td>29456</td> <td>32715</td> <td>36439</td> </tr>\r
- <tr> <td>Vanuatu</td> <td>48</td> <td>240</td> <td>276</td> <td>338</td> <td>482</td> </tr>\r
- <tr> <td>Venezuela (Bolivarian Republic of)</td> <td>5094</td> <td>28583</td> <td>31292</td> <td>35370</td> <td>42042</td> </tr>\r
- <tr> <td>Viet Nam</td> <td>27367</td> <td>88069</td> <td>93647</td> <td>102054</td> <td>111666</td> </tr>\r
- <tr> <td>Wallis and Futuna Islands</td> <td>7</td> <td>15</td> <td>16</td> <td>17</td> <td>17</td> </tr>\r
- <tr> <td>Western Sahara</td> <td>14</td> <td>513</td> <td>625</td> <td>775</td> <td>938</td> </tr>\r
- <tr> <td>Yemen</td> <td>4316</td> <td>23580</td> <td>27819</td> <td>35509</td> <td>53689</td> </tr>\r
- <tr> <td>Zambia</td> <td>2340</td> <td>12935</td> <td>14980</td> <td>18890</td> <td>28957</td> </tr>\r
- <tr> <td>Zimbabwe</td> <td>2747</td> <td>12523</td> <td>14029</td> <td>16780</td> <td>22178</td> </tr>\r
-</tbody>\r
-</table>\r
+<Rico:LiveGrid runat='server' id='population' menuEvent='click' frozenColumns='1' highlightElem='cursorRow' defaultWidth='90' HtmlSourceId='population_data'>\r
+ <Rico:ColumnGroup runat='server' heading="" />\r
+ <Rico:Column runat='server' heading='Country or area' width='200' />\r
+ <Rico:ColumnGroup runat='server' heading="Population (thousands)" />\r
+ <Rico:Column runat='server' heading='1950' width='90' DataType='number' />\r
+ <Rico:Column runat='server' heading='2009' width='90' DataType='number' />\r
+ <Rico:Column runat='server' heading='2015' width='90' DataType='number' />\r
+ <Rico:Column runat='server' heading='2025' width='90' DataType='number' />\r
+ <Rico:Column runat='server' heading='2050' width='90' DataType='number' />\r
+</Rico:LiveGrid>\r
\r
+<table id="population_data" style="display:none;">\r
+ <tr><td>Afghanistan</td><td>8151</td><td>28150</td><td>34246</td><td>44970</td><td>73938</td> </tr>\r
+ <tr><td>Albania</td><td>1215</td><td>3155</td><td>3256</td><td>3395</td><td>3303</td> </tr>\r
+ <tr><td>Algeria</td><td>8753</td><td>34895</td><td>38088</td><td>42882</td><td>49610</td> </tr>\r
+ <tr><td>American Samoa</td><td>19</td><td>67</td><td>74</td><td>86</td><td>107</td> </tr>\r
+ <tr><td>Andorra</td><td>6</td><td>86</td><td>93</td><td>107</td><td>137</td> </tr>\r
+ <tr><td>Angola</td><td>4148</td><td>18498</td><td>21690</td><td>27441</td><td>42267</td> </tr>\r
+ <tr><td>Anguilla</td><td>5</td><td>15</td><td>17</td><td>18</td><td>20</td> </tr>\r
+ <tr><td>Antigua and Barbuda</td><td>46</td><td>88</td><td>93</td><td>101</td><td>112</td> </tr>\r
+ <tr><td>Argentina</td><td>17150</td><td>40276</td><td>42548</td><td>45883</td><td>50943</td> </tr>\r
+ <tr><td>Armenia</td><td>1354</td><td>3083</td><td>3139</td><td>3181</td><td>3018</td> </tr>\r
+ <tr><td>Aruba</td><td>38</td><td>107</td><td>109</td><td>112</td><td>106</td> </tr>\r
+ <tr><td>Australia</td><td>8219</td><td>21293</td><td>22607</td><td>24703</td><td>28724</td> </tr>\r
+ <tr><td>Austria</td><td>6936</td><td>8364</td><td>8467</td><td>8600</td><td>8515</td> </tr>\r
+ <tr><td>Azerbaijan</td><td>2896</td><td>8832</td><td>9426</td><td>10128</td><td>10579</td> </tr>\r
+ <tr><td>Bahamas</td><td>79</td><td>342</td><td>366</td><td>402</td><td>455</td> </tr>\r
+ <tr><td>Bahrain</td><td>116</td><td>791</td><td>882</td><td>1021</td><td>1277</td> </tr>\r
+ <tr><td>Bangladesh</td><td>43595</td><td>162221</td><td>175217</td><td>195012</td><td>222495</td> </tr>\r
+ <tr><td>Barbados</td><td>211</td><td>256</td><td>260</td><td>262</td><td>237</td> </tr>\r
+ <tr><td>Belarus</td><td>7745</td><td>9634</td><td>9355</td><td>8851</td><td>7275</td> </tr>\r
+ <tr><td>Belgium</td><td>8628</td><td>10647</td><td>10878</td><td>11191</td><td>11493</td> </tr>\r
+ <tr><td>Belize</td><td>69</td><td>307</td><td>344</td><td>404</td><td>506</td> </tr>\r
+ <tr><td>Benin</td><td>2050</td><td>8935</td><td>10647</td><td>13767</td><td>21982</td> </tr>\r
+ <tr><td>Bermuda</td><td>37</td><td>65</td><td>65</td><td>66</td><td>63</td> </tr>\r
+ <tr><td>Bhutan</td><td>168</td><td>697</td><td>770</td><td>865</td><td>1013</td> </tr>\r
+ <tr><td>Bolivia</td><td>2714</td><td>9863</td><td>10854</td><td>12368</td><td>14908</td> </tr>\r
+ <tr><td>Bosnia and Herzegovina</td><td>2661</td><td>3767</td><td>3727</td><td>3608</td><td>3008</td> </tr>\r
+ <tr><td>Botswana</td><td>413</td><td>1950</td><td>2106</td><td>2337</td><td>2758</td> </tr>\r
+ <tr><td>Brazil</td><td>53975</td><td>193734</td><td>202866</td><td>213802</td><td>218512</td> </tr>\r
+ <tr><td>British Virgin Islands</td><td>7</td><td>23</td><td>24</td><td>26</td><td>28</td> </tr>\r
+ <tr><td>Brunei Darussalam</td><td>48</td><td>400</td><td>443</td><td>513</td><td>658</td> </tr>\r
+ <tr><td>Bulgaria</td><td>7251</td><td>7545</td><td>7263</td><td>6752</td><td>5392</td> </tr>\r
+ <tr><td>Burkina Faso</td><td>4080</td><td>15757</td><td>19013</td><td>24837</td><td>40830</td> </tr>\r
+ <tr><td>Burundi</td><td>2456</td><td>8303</td><td>9413</td><td>11161</td><td>14846</td> </tr>\r
+ <tr><td>Cambodia</td><td>4346</td><td>14805</td><td>16357</td><td>18973</td><td>23795</td> </tr>\r
+ <tr><td>Cameroon</td><td>4466</td><td>19522</td><td>22169</td><td>26478</td><td>36736</td> </tr>\r
+ <tr><td>Canada</td><td>13737</td><td>33573</td><td>35493</td><td>38659</td><td>44414</td> </tr>\r
+ <tr><td>Cape Verde</td><td>146</td><td>506</td><td>548</td><td>616</td><td>703</td> </tr>\r
+ <tr><td>Cayman Islands</td><td>7</td><td>56</td><td>59</td><td>63</td><td>66</td> </tr>\r
+ <tr><td>Central African Republic</td><td>1327</td><td>4422</td><td>4927</td><td>5747</td><td>7603</td> </tr>\r
+ <tr><td>Chad</td><td>2429</td><td>11206</td><td>13120</td><td>16906</td><td>27776</td> </tr>\r
+ <tr><td>Channel Islands</td><td>102</td><td>150</td><td>151</td><td>152</td><td>144</td> </tr>\r
+ <tr><td>Chile</td><td>6082</td><td>16970</td><td>17926</td><td>19266</td><td>20657</td> </tr>\r
+ <tr><td>China</td><td>544951</td><td>1345751</td><td>1395998</td><td>1453140</td><td>1417045</td> </tr>\r
+ <tr><td>China, Hong Kong SAR</td><td>1974</td><td>7022</td><td>7398</td><td>7969</td><td>8623</td> </tr>\r
+ <tr><td>China, Macao SAR</td><td>190</td><td>538</td><td>568</td><td>603</td><td>593</td> </tr>\r
+ <tr><td>Colombia</td><td>12000</td><td>45660</td><td>49385</td><td>54920</td><td>62877</td> </tr>\r
+ <tr><td>Comoros</td><td>156</td><td>676</td><td>767</td><td>907</td><td>1226</td> </tr>\r
+ <tr><td>Congo</td><td>808</td><td>3683</td><td>4225</td><td>5094</td><td>6863</td> </tr>\r
+ <tr><td>Cook Islands</td><td>15</td><td>20</td><td>20</td><td>21</td><td>24</td> </tr>\r
+ <tr><td>Costa Rica</td><td>966</td><td>4579</td><td>4957</td><td>5521</td><td>6373</td> </tr>\r
+ <tr><td>Côte d'Ivoire</td><td>2505</td><td>21075</td><td>24210</td><td>29738</td><td>43373</td> </tr>\r
+ <tr><td>Croatia</td><td>3850</td><td>4416</td><td>4370</td><td>4254</td><td>3825</td> </tr>\r
+ <tr><td>Cuba</td><td>5920</td><td>11204</td><td>11213</td><td>11148</td><td>9725</td> </tr>\r
+ <tr><td>Cyprus</td><td>494</td><td>871</td><td>925</td><td>1014</td><td>1175</td> </tr>\r
+ <tr><td>Czech Republic</td><td>8925</td><td>10369</td><td>10510</td><td>10573</td><td>10294</td> </tr>\r
+ <tr><td>Dem. People's Rep. of Korea</td><td>9737</td><td>23906</td><td>24399</td><td>25128</td><td>24562</td> </tr>\r
+ <tr><td>Dem. Republic of the Congo</td><td>12184</td><td>66020</td><td>77419</td><td>98123</td><td>147512</td> </tr>\r
+ <tr><td>Denmark</td><td>4271</td><td>5470</td><td>5523</td><td>5590</td><td>5551</td> </tr>\r
+ <tr><td>Djibouti</td><td>62</td><td>864</td><td>953</td><td>1111</td><td>1469</td> </tr>\r
+ <tr><td>Dominica</td><td>51</td><td>67</td><td>67</td><td>68</td><td>66</td> </tr>\r
+ <tr><td>Dominican Republic</td><td>2427</td><td>10090</td><td>10867</td><td>11973</td><td>13441</td> </tr>\r
+ <tr><td>Ecuador</td><td>3387</td><td>13625</td><td>14596</td><td>16074</td><td>17989</td> </tr>\r
+ <tr><td>Egypt</td><td>21514</td><td>82999</td><td>91778</td><td>104970</td><td>129533</td> </tr>\r
+ <tr><td>El Salvador</td><td>2200</td><td>6163</td><td>6383</td><td>6895</td><td>7882</td> </tr>\r
+ <tr><td>Equatorial Guinea</td><td>226</td><td>676</td><td>781</td><td>971</td><td>1445</td> </tr>\r
+ <tr><td>Eritrea</td><td>1141</td><td>5073</td><td>6009</td><td>7404</td><td>10787</td> </tr>\r
+ <tr><td>Estonia</td><td>1101</td><td>1340</td><td>1337</td><td>1321</td><td>1233</td> </tr>\r
+ <tr><td>Ethiopia</td><td>18434</td><td>82825</td><td>96237</td><td>119822</td><td>173811</td> </tr>\r
+ <tr><td>Faeroe Islands</td><td>32</td><td>50</td><td>52</td><td>55</td><td>58</td> </tr>\r
+ <tr><td>Falkland Islands (Malvinas)</td> <td>2</td><td>3</td><td>3</td><td>3</td><td>3</td> </tr>\r
+ <tr><td>Fiji</td><td>289</td><td>849</td><td>874</td><td>905</td><td>910</td> </tr>\r
+ <tr><td>Finland</td><td>4009</td><td>5326</td><td>5432</td><td>5533</td><td>5445</td> </tr>\r
+ <tr><td>France</td><td>41832</td><td>62343</td><td>63900</td><td>65769</td><td>67668</td> </tr>\r
+ <tr><td>French Guiana</td><td>25</td><td>226</td><td>261</td><td>323</td><td>462</td> </tr>\r
+ <tr><td>French Polynesia</td><td>61</td><td>269</td><td>289</td><td>318</td><td>354</td> </tr>\r
+ <tr><td>Gabon</td><td>469</td><td>1475</td><td>1639</td><td>1915</td><td>2471</td> </tr>\r
+ <tr><td>Gambia</td><td>258</td><td>1705</td><td>1985</td><td>2478</td><td>3763</td> </tr>\r
+ <tr><td>Georgia</td><td>3527</td><td>4260</td><td>4084</td><td>3888</td><td>3267</td> </tr>\r
+ <tr><td>Germany</td><td>68376</td><td>82167</td><td>81346</td><td>79258</td><td>70504</td> </tr>\r
+ <tr><td>Ghana</td><td>4981</td><td>23837</td><td>26925</td><td>32233</td><td>45213</td> </tr>\r
+ <tr><td>Gibraltar</td><td>20</td><td>31</td><td>31</td><td>32</td><td>30</td> </tr>\r
+ <tr><td>Greece</td><td>7566</td><td>11161</td><td>11261</td><td>11274</td><td>10939</td> </tr>\r
+ <tr><td>Greenland</td><td>23</td><td>57</td><td>57</td><td>56</td><td>50</td> </tr>\r
+ <tr><td>Grenada</td><td>77</td><td>104</td><td>107</td><td>109</td><td>97</td> </tr>\r
+ <tr><td>Guadeloupe</td><td>210</td><td>465</td><td>476</td><td>489</td><td>477</td> </tr>\r
+ <tr><td>Guam</td><td>60</td><td>178</td><td>191</td><td>211</td><td>242</td> </tr>\r
+ <tr><td>Guatemala</td><td>3146</td><td>14027</td><td>16227</td><td>19927</td><td>27480</td> </tr>\r
+ <tr><td>Guinea</td><td>2619</td><td>10069</td><td>11844</td><td>15158</td><td>23975</td> </tr>\r
+ <tr><td>Guinea-Bissau</td><td>518</td><td>1611</td><td>1848</td><td>2296</td><td>3555</td> </tr>\r
+ <tr><td>Guyana</td><td>423</td><td>762</td><td>754</td><td>732</td><td>558</td> </tr>\r
+ <tr><td>Haiti</td><td>3221</td><td>10033</td><td>10957</td><td>12476</td><td>15485</td> </tr>\r
+ <tr><td>Holy See</td><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td> </tr>\r
+ <tr><td>Honduras</td><td>1487</td><td>7466</td><td>8386</td><td>9844</td><td>12402</td> </tr>\r
+ <tr><td>Hungary</td><td>9338</td><td>9993</td><td>9874</td><td>9647</td><td>8934</td> </tr>\r
+ <tr><td>Iceland</td><td>143</td><td>323</td><td>353</td><td>384</td><td>407</td> </tr>\r
+ <tr><td>India</td><td>371857</td><td>1198003</td><td>1294192</td><td>1431272</td><td>1613800</td> </tr>\r
+ <tr><td>Indonesia</td><td>77152</td><td>229965</td><td>244191</td><td>263287</td><td>288110</td> </tr>\r
+ <tr><td>Iran (Islamic Republic of)</td> <td>16913</td><td>74196</td><td>79454</td><td>87134</td><td>96975</td> </tr>\r
+ <tr><td>Iraq</td><td>5719</td><td>30747</td><td>35884</td><td>44692</td><td>63995</td> </tr>\r
+ <tr><td>Ireland</td><td>2969</td><td>4515</td><td>4886</td><td>5370</td><td>6295</td> </tr>\r
+ <tr><td>Isle of Man</td><td>55</td><td>80</td><td>81</td><td>80</td><td>75</td> </tr>\r
+ <tr><td>Israel</td><td>1258</td><td>7170</td><td>7823</td><td>8769</td><td>10649</td> </tr>\r
+ <tr><td>Italy</td><td>46367</td><td>59870</td><td>60604</td><td>60018</td><td>57066</td> </tr>\r
+ <tr><td>Jamaica</td><td>1403</td><td>2719</td><td>2786</td><td>2866</td><td>2683</td> </tr>\r
+ <tr><td>Japan</td><td>82824</td><td>127156</td><td>125791</td><td>120793</td><td>101659</td> </tr>\r
+ <tr><td>Jordan</td><td>472</td><td>6316</td><td>6957</td><td>8088</td><td>10241</td> </tr>\r
+ <tr><td>Kazakhstan</td><td>6703</td><td>15637</td><td>16289</td><td>17025</td><td>17848</td> </tr>\r
+ <tr><td>Kenya</td><td>6077</td><td>39802</td><td>46433</td><td>57573</td><td>85410</td> </tr>\r
+ <tr><td>Kiribati</td><td>26</td><td>98</td><td>107</td><td>123</td><td>151</td> </tr>\r
+ <tr><td>Kuwait</td><td>152</td><td>2985</td><td>3378</td><td>3988</td><td>5240</td> </tr>\r
+ <tr><td>Kyrgyzstan</td><td>1740</td><td>5482</td><td>5877</td><td>6378</td><td>6882</td> </tr>\r
+ <tr><td>Lao People's Dem. Republic</td><td>1666</td><td>6320</td><td>7028</td><td>8273</td><td>10744</td> </tr>\r
+ <tr><td>Latvia</td><td>1949</td><td>2249</td><td>2197</td><td>2101</td><td>1854</td> </tr>\r
+ <tr><td>Lebanon</td><td>1443</td><td>4224</td><td>4426</td><td>4736</td><td>5033</td> </tr>\r
+ <tr><td>Lesotho</td><td>734</td><td>2067</td><td>2168</td><td>2306</td><td>2491</td> </tr>\r
+ <tr><td>Liberia</td><td>824</td><td>3955</td><td>4665</td><td>5858</td><td>8841</td> </tr>\r
+ <tr><td>Libyan Arab Jamahiriya</td><td>1029</td><td>6420</td><td>7158</td><td>8144</td><td>9819</td> </tr>\r
+ <tr><td>Liechtenstein</td><td>14</td><td>36</td><td>38</td><td>40</td><td>45</td> </tr>\r
+ <tr><td>Lithuania</td><td>2567</td><td>3287</td><td>3143</td><td>2985</td><td>2579</td> </tr>\r
+ <tr><td>Luxembourg</td><td>296</td><td>486</td><td>520</td><td>582</td><td>733</td> </tr>\r
+ <tr><td>Madagascar</td><td>4084</td><td>19625</td><td>22853</td><td>28595</td><td>42693</td> </tr>\r
+ <tr><td>Malawi</td><td>2881</td><td>15263</td><td>17998</td><td>23194</td><td>36575</td> </tr>\r
+ <tr><td>Malaysia</td><td>6110</td><td>27468</td><td>30041</td><td>33770</td><td>39664</td> </tr>\r
+ <tr><td>Maldives</td><td>82</td><td>309</td><td>338</td><td>384</td><td>455</td> </tr>\r
+ <tr><td>Mali</td><td>4268</td><td>13010</td><td>14993</td><td>18603</td><td>28260</td> </tr>\r
+ <tr><td>Malta</td><td>312</td><td>409</td><td>417</td><td>426</td><td>413</td> </tr>\r
+ <tr><td>Marshall Islands</td><td>13</td><td>62</td><td>70</td><td>79</td><td>92</td> </tr>\r
+ <tr><td>Martinique</td><td>222</td><td>405</td><td>411</td><td>418</td><td>393</td> </tr>\r
+ <tr><td>Mauritania</td><td>651</td><td>3291</td><td>3732</td><td>4443</td><td>6061</td> </tr>\r
+ <tr><td>Mauritius</td><td>493</td><td>1288</td><td>1337</td><td>1400</td><td>1426</td> </tr>\r
+ <tr><td>Mayotte</td><td>15</td><td>194</td><td>224</td><td>277</td><td>386</td> </tr>\r
+ <tr><td>Mexico</td><td>27741</td><td>109610</td><td>115528</td><td>123366</td><td>128964</td> </tr>\r
+ <tr><td>Micronesia (Fed. States of)</td> <td>32</td><td>111</td><td>114</td><td>122</td><td>128</td> </tr>\r
+ <tr><td>Moldova (Republic of)</td> <td>2341</td><td>3604</td><td>3462</td><td>3291</td><td>2734</td> </tr>\r
+ <tr><td>Monaco</td><td>20</td><td>33</td><td>33</td><td>35</td><td>38</td> </tr>\r
+ <tr><td>Mongolia</td><td>761</td><td>2671</td><td>2855</td><td>3134</td><td>3446</td> </tr>\r
+ <tr><td>Montenegro</td><td>399</td><td>624</td><td>627</td><td>633</td><td>618</td> </tr>\r
+ <tr><td>Montserrat</td><td>14</td><td>6</td><td>6</td><td>7</td><td>7</td> </tr>\r
+ <tr><td>Morocco</td><td>8953</td><td>31993</td><td>34330</td><td>37865</td><td>42583</td> </tr>\r
+ <tr><td>Mozambique</td><td>6442</td><td>22894</td><td>25957</td><td>31190</td><td>44148</td> </tr>\r
+ <tr><td>Myanmar</td><td>17158</td><td>50020</td><td>53087</td><td>57585</td><td>63373</td> </tr>\r
+ <tr><td>Namibia</td><td>485</td><td>2171</td><td>2412</td><td>2810</td><td>3588</td> </tr>\r
+ <tr><td>Nauru</td><td>3</td><td>10</td><td>11</td><td>11</td><td>11</td> </tr>\r
+ <tr><td>Nepal</td><td>8126</td><td>29331</td><td>32503</td><td>38031</td><td>49028</td> </tr>\r
+ <tr><td>Netherlands</td><td>10114</td><td>16592</td><td>16915</td><td>17348</td><td>17399</td> </tr>\r
+ <tr><td>Netherlands Antilles</td><td>112</td><td>198</td><td>207</td><td>210</td><td>192</td> </tr>\r
+ <tr><td>New Caledonia</td><td>65</td><td>250</td><td>271</td><td>304</td><td>362</td> </tr>\r
+ <tr><td>New Zealand</td><td>1908</td><td>4266</td><td>4492</td><td>4831</td><td>5349</td> </tr>\r
+ <tr><td>Nicaragua</td><td>1295</td><td>5743</td><td>6265</td><td>7058</td><td>8143</td> </tr>\r
+ <tr><td>Niger</td><td>2462</td><td>15290</td><td>19150</td><td>27388</td><td>58216</td> </tr>\r
+ <tr><td>Nigeria</td><td>36680</td><td>154729</td><td>175928</td><td>210057</td><td>289083</td> </tr>\r
+ <tr><td>Niue</td><td>5</td><td>1</td><td>1</td><td>1</td><td>1</td> </tr>\r
+ <tr><td>Northern Mariana Islands</td><td>7</td><td>87</td><td>96</td><td>111</td><td>151</td> </tr>\r
+ <tr><td>Norway</td><td>3265</td><td>4812</td><td>5036</td><td>5365</td><td>5947</td> </tr>\r
+ <tr><td>Occupied Palestinian Territory</td><td>1005</td><td>4277</td><td>5090</td><td>6553</td><td>10265</td> </tr>\r
+ <tr><td>Oman</td><td>456</td><td>2845</td><td>3198</td><td>3782</td><td>4878</td> </tr>\r
+ <tr><td>Pakistan</td><td>41177</td><td>180808</td><td>205504</td><td>246286</td><td>335195</td> </tr>\r
+ <tr><td>Palau</td><td>7</td><td>20</td><td>21</td><td>23</td><td>26</td> </tr>\r
+ <tr><td>Panama</td><td>860</td><td>3454</td><td>3773</td><td>4267</td><td>5092</td> </tr>\r
+ <tr><td>Papua New Guinea</td><td>1798</td><td>6732</td><td>7678</td><td>9265</td><td>12871</td> </tr>\r
+ <tr><td>Paraguay</td><td>1473</td><td>6349</td><td>7007</td><td>8026</td><td>9867</td> </tr>\r
+ <tr><td>Peru</td><td>7632</td><td>29165</td><td>31197</td><td>34528</td><td>39776</td> </tr>\r
+ <tr><td>Philippines</td><td>19996</td><td>91983</td><td>101734</td><td>117270</td><td>146156</td> </tr>\r
+ <tr><td>Pitcairn</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td> </tr>\r
+ <tr><td>Poland</td><td>24824</td><td>38074</td><td>37788</td><td>36964</td><td>32013</td> </tr>\r
+ <tr><td>Portugal</td><td>8405</td><td>10707</td><td>10787</td><td>10706</td><td>10015</td> </tr>\r
+ <tr><td>Puerto Rico</td><td>2218</td><td>3982</td><td>4074</td><td>4176</td><td>4103</td> </tr>\r
+ <tr><td>Qatar</td><td>25</td><td>1409</td><td>1630</td><td>1848</td><td>2316</td> </tr>\r
+ <tr><td>Republic of Korea</td><td>19211</td><td>48333</td><td>49153</td><td>49484</td><td>44077</td> </tr>\r
+ <tr><td>Réunion</td><td>248</td><td>827</td><td>886</td><td>973</td><td>1096</td> </tr>\r
+ <tr><td>Romania</td><td>16311</td><td>21275</td><td>20787</td><td>19961</td><td>17279</td> </tr>\r
+ <tr><td>Russian Federation</td><td>102702</td><td>140874</td><td>137983</td><td>132345</td><td>116097</td> </tr>\r
+ <tr><td>Rwanda</td><td>2162</td><td>9998</td><td>11743</td><td>14676</td><td>22082</td> </tr>\r
+ <tr><td>Saint Helena</td><td>5</td><td>4</td><td>4</td><td>5</td><td>5</td> </tr>\r
+ <tr><td>Saint Kitts and Nevis</td><td>46</td><td>52</td><td>56</td><td>61</td><td>69</td> </tr>\r
+ <tr><td>Saint Lucia</td><td>83</td><td>172</td><td>182</td><td>198</td><td>217</td> </tr>\r
+ <tr><td>Saint Pierre and Miquelon</td><td>5</td><td>6</td><td>6</td><td>6</td><td>6</td> </tr>\r
+ <tr><td>St. Vincent and the Grenadines</td><td>67</td><td>109</td><td>110</td><td>111</td><td>119</td> </tr>\r
+ <tr><td>Samoa</td><td>82</td><td>179</td><td>181</td><td>188</td><td>192</td> </tr>\r
+ <tr><td>San Marino</td><td>13</td><td>31</td><td>32</td><td>33</td><td>33</td> </tr>\r
+ <tr><td>Sao Tome and Principe</td><td>60</td><td>163</td><td>180</td><td>216</td><td>296</td> </tr>\r
+ <tr><td>Saudi Arabia</td><td>3201</td><td>25721</td><td>28933</td><td>34176</td><td>43658</td> </tr>\r
+ <tr><td>Senegal</td><td>2416</td><td>12534</td><td>14526</td><td>17861</td><td>26102</td> </tr>\r
+ <tr><td>Serbia</td><td>6732</td><td>9850</td><td>9828</td><td>9720</td><td>9193</td> </tr>\r
+ <tr><td>Seychelles</td><td>36</td><td>84</td><td>86</td><td>91</td><td>97</td> </tr>\r
+ <tr><td>Sierra Leone</td><td>1944</td><td>5696</td><td>6557</td><td>8112</td><td>12446</td> </tr>\r
+ <tr><td>Singapore</td><td>1022</td><td>4737</td><td>5059</td><td>5362</td><td>5221</td> </tr>\r
+ <tr><td>Slovakia</td><td>3463</td><td>5406</td><td>5437</td><td>5413</td><td>4917</td> </tr>\r
+ <tr><td>Slovenia</td><td>1473</td><td>2020</td><td>2044</td><td>2050</td><td>1954</td> </tr>\r
+ <tr><td>Solomon Islands</td><td>90</td><td>523</td><td>599</td><td>725</td><td>1007</td> </tr>\r
+ <tr><td>Somalia</td><td>2264</td><td>9133</td><td>10731</td><td>13922</td><td>23522</td> </tr>\r
+ <tr><td>South Africa</td><td>13683</td><td>50110</td><td>51684</td><td>53766</td><td>56802</td> </tr>\r
+ <tr><td>Spain</td><td>28009</td><td>44904</td><td>47203</td><td>49265</td><td>51260</td> </tr>\r
+ <tr><td>Sri Lanka</td><td>8241</td><td>20238</td><td>21167</td><td>22033</td><td>21705</td> </tr>\r
+ <tr><td>Sudan</td><td>9190</td><td>42272</td><td>47730</td><td>56688</td><td>75884</td> </tr>\r
+ <tr><td>Suriname</td><td>215</td><td>520</td><td>547</td><td>586</td><td>619</td> </tr>\r
+ <tr><td>Swaziland</td><td>273</td><td>1185</td><td>1287</td><td>1455</td><td>1749</td> </tr>\r
+ <tr><td>Sweden</td><td>7014</td><td>9249</td><td>9498</td><td>9915</td><td>10571</td> </tr>\r
+ <tr><td>Switzerland</td><td>4693</td><td>7568</td><td>7736</td><td>8020</td><td>8514</td> </tr>\r
+ <tr><td>Syrian Arab Republic</td><td>3536</td><td>21906</td><td>24494</td><td>28592</td><td>36911</td> </tr>\r
+ <tr><td>Tajikistan</td><td>1532</td><td>6952</td><td>7761</td><td>9075</td><td>11111</td> </tr>\r
+ <tr><td>TFYR Macedonia</td><td>1230</td><td>2042</td><td>2045</td><td>2037</td><td>1857</td> </tr>\r
+ <tr><td>Thailand</td><td>20607</td><td>67764</td><td>69939</td><td>72628</td><td>73361</td> </tr>\r
+ <tr><td>Timor-Leste</td><td>433</td><td>1134</td><td>1385</td><td>1869</td><td>3217</td> </tr>\r
+ <tr><td>Togo</td><td>1329</td><td>6619</td><td>7607</td><td>9282</td><td>13196</td> </tr>\r
+ <tr><td>Tokelau</td><td>2</td><td>1</td><td>1</td><td>1</td><td>1</td> </tr>\r
+ <tr><td>Tonga</td><td>47</td><td>104</td><td>105</td><td>112</td><td>123</td> </tr>\r
+ <tr><td>Trinidad and Tobago</td><td>636</td><td>1339</td><td>1368</td><td>1388</td><td>1278</td> </tr>\r
+ <tr><td>Tunisia</td><td>3530</td><td>10272</td><td>10884</td><td>11797</td><td>12711</td> </tr>\r
+ <tr><td>Turkey</td><td>21484</td><td>74816</td><td>79966</td><td>87364</td><td>97389</td> </tr>\r
+ <tr><td>Turkmenistan</td><td>1211</td><td>5110</td><td>5509</td><td>6072</td><td>6796</td> </tr>\r
+ <tr><td>Turks and Caicos Islands</td><td>5</td><td>33</td><td>35</td><td>38</td><td>40</td> </tr>\r
+ <tr><td>Tuvalu</td><td>5</td><td>10</td><td>10</td><td>11</td><td>11</td> </tr>\r
+ <tr><td>Uganda</td><td>5158</td><td>32710</td><td>39710</td><td>53406</td><td>91271</td> </tr>\r
+ <tr><td>Ukraine</td><td>37298</td><td>45708</td><td>44165</td><td>41617</td><td>35026</td> </tr>\r
+ <tr><td>United Arab Emirates</td><td>70</td><td>4599</td><td>5193</td><td>6109</td><td>8253</td> </tr>\r
+ <tr><td>United Kingdom</td><td>50616</td><td>61565</td><td>63528</td><td>66601</td><td>72365</td> </tr>\r
+ <tr><td>United Republic of Tanzania</td><td>7650</td><td>43739</td><td>52109</td><td>67394</td><td>109450</td> </tr>\r
+ <tr><td>United States of America</td><td>157813</td><td>314659</td><td>332334</td><td>358735</td><td>403932</td> </tr>\r
+ <tr><td>United States Virgin Islands</td><td>27</td><td>110</td><td>108</td><td>103</td><td>75</td> </tr>\r
+ <tr><td>Uruguay</td><td>2239</td><td>3361</td><td>3430</td><td>3546</td><td>3637</td> </tr>\r
+ <tr><td>Uzbekistan</td><td>6314</td><td>27488</td><td>29456</td><td>32715</td><td>36439</td> </tr>\r
+ <tr><td>Vanuatu</td><td>48</td><td>240</td><td>276</td><td>338</td><td>482</td> </tr>\r
+ <tr><td>Venezuela (Bolivarian Republic of)</td> <td>5094</td><td>28583</td><td>31292</td><td>35370</td><td>42042</td> </tr>\r
+ <tr><td>Viet Nam</td><td>27367</td><td>88069</td><td>93647</td><td>102054</td><td>111666</td> </tr>\r
+ <tr><td>Wallis and Futuna Islands</td><td>7</td><td>15</td><td>16</td><td>17</td><td>17</td> </tr>\r
+ <tr><td>Western Sahara</td><td>14</td><td>513</td><td>625</td><td>775</td><td>938</td> </tr>\r
+ <tr><td>Yemen</td><td>4316</td><td>23580</td><td>27819</td><td>35509</td><td>53689</td> </tr>\r
+ <tr><td>Zambia</td><td>2340</td><td>12935</td><td>14980</td><td>18890</td><td>28957</td> </tr>\r
+ <tr><td>Zimbabwe</td><td>2747</td><td>12523</td><td>14029</td><td>16780</td><td>22178</td> </tr>\r
+</table>\r
\r
</body>\r
</html>\r
<Rico:LoadClient checkQueryString='true' runat='server' />\r
<link href="../demo.css" type="text/css" rel="stylesheet" />\r
\r
-<style type="text/css">\r
-div.ricoLG_cell {\r
- white-space:nowrap;\r
-}\r
-</style>\r
</head>\r
\r
\r
<p><strong>Orders Table</strong></p>\r
\r
\r
-<Rico:LiveGridEdit runat='server' id='ex8' TableName='orders' DefaultSort='OrderID' FilterLocation='-1'>\r
+<Rico:LiveGridEdit runat='server' id='ex8' DefaultSort='OrderID' FilterLocation='-1'>\r
<Rico:CalendarControl runat='server' id='Cal' icon='rico-icon rico-calarrow' />\r
<Rico:TreeControl runat='server' id='CustomerTree' icon='rico-icon rico-dotbutton' source='CustTree.aspx' />\r
+\r
+ <Rico:Table runat='server' TblName='orders' />\r
<Rico:ColumnGroup runat='server' heading='Basic Info' />\r
- <Rico:Column runat='server' heading='Order#' width='60' ColName='OrderID' EntryType='B' ColData='<auto>' ConfirmDeleteColumn='true' />\r
- <Rico:Column runat='server' heading='Customer' width='160' ColName='CustomerID' EntryType='CL' InsertOnly='true' SelectCtl='CustomerTree' SelectSql="select CustomerID,CompanyName from customers order by CompanyName" filterUI='t' />\r
- <Rico:Column runat='server' heading='Sales Person' width='140' ColName='EmployeeID' EntryType='SL' filterUI='m' id='EmployeeID' />\r
- <Rico:Column runat='server' heading='Order Date' width='100' ColName='OrderDate' EntryType='D' ColData='Today' SelectCtl='Cal' />\r
- <Rico:Column runat='server' heading='Required Date' width='100' ColName='RequiredDate' EntryType='D' ColData='Today' SelectCtl='Cal' />\r
- <Rico:Column runat='server' heading='Net Sale' width='80' format='DOLLAR' Formula='select sum(UnitPrice*Quantity*(1.0-Discount)) from order_details d where d.OrderID=t.OrderID' />\r
+ <Rico:EditCol runat='server' heading='Order#' width='60' ColName='OrderID' EntryType='B' ColData='<auto>' ConfirmDeleteColumn='true' />\r
+ <Rico:EditCol runat='server' heading='Customer' width='160' ColName='CustomerID' EntryType='CL' InsertOnly='true' SelectCtl='CustomerTree' SelectSql="select CustomerID,CompanyName from customers order by CompanyName" filterUI='t' />\r
+ <Rico:EditCol runat='server' heading='Sales Person' width='140' ColName='EmployeeID' EntryType='SL' filterUI='m' id='EmployeeID' />\r
+ <Rico:EditCol runat='server' heading='Order Date' width='100' ColName='OrderDate' EntryType='D' ColData='Today' SelectCtl='Cal' />\r
+ <Rico:EditCol runat='server' heading='Required Date' width='100' ColName='RequiredDate' EntryType='D' ColData='Today' SelectCtl='Cal' />\r
+ <Rico:FormulaCol runat='server' heading='Net Sale' width='80' DataType='DOLLAR' Formula='select sum(UnitPrice*Quantity*(1.0-Discount)) from order_details d where d.OrderID=t.OrderID' />\r
\r
<Rico:ColumnGroup runat='server' heading='Ship To' />\r
- <Rico:Column runat='server' heading='Name' width='150' ColName='ShipName' EntryType='B' />\r
- <Rico:Column runat='server' heading='Address' width='150' ColName='ShipAddress' EntryType='B' />\r
- <Rico:Column runat='server' heading='City' width='120' ColName='ShipCity' EntryType='B' filterUI='m' />\r
- <Rico:Column runat='server' heading='Region' width='80' ColName='ShipRegion' EntryType='T' />\r
- <Rico:Column runat='server' heading='Postal Code' width='80' ColName='ShipPostalCode' EntryType='T' />\r
- <Rico:Column runat='server' heading='Country' width='90' ColName='ShipCountry' EntryType='N' filterUI='s' control="new Rico.TableColumn.link('http://en.wikipedia.org/wiki/{11}','_blank')" />\r
+ <Rico:EditCol runat='server' heading='Name' width='150' ColName='ShipName' EntryType='B' />\r
+ <Rico:EditCol runat='server' heading='Address' width='150' ColName='ShipAddress' EntryType='B' />\r
+ <Rico:EditCol runat='server' heading='City' width='120' ColName='ShipCity' EntryType='B' filterUI='m' />\r
+ <Rico:EditCol runat='server' heading='Region' width='80' ColName='ShipRegion' EntryType='T' />\r
+ <Rico:EditCol runat='server' heading='Postal Code' width='80' ColName='ShipPostalCode' EntryType='T' />\r
+ <Rico:EditCol runat='server' heading='Country' width='90' ColName='ShipCountry' EntryType='N' filterUI='s' control="new Rico.TableColumn.link('http://en.wikipedia.org/wiki/{11}','_blank')" />\r
</Rico:LiveGridEdit>\r
\r
</body>\r
<Rico:LoadClient checkQueryString='true' runat='server' />\r
<link href="../demo.css" type="text/css" rel="stylesheet" />\r
\r
-<style type="text/css">\r
-div.ricoLG_cell {\r
- white-space:nowrap;\r
-}\r
-</style>\r
</head>\r
<body>\r
\r
(displays directly in Chrome and Safari, requires JSONview or similar extension in Firefox).\r
</div>\r
\r
-<Rico:LiveGrid runat='server' id='ex2j' fmt="json" TableName='orders' DefaultSort='OrderID' menuEvent='click' frozenColumns='1' highlightElem='cursorRow'>\r
-<GridColumns>\r
- <Rico:Column runat='server' ColName='OrderID' heading='Order#' width='60' />\r
- <Rico:Column runat='server' ColName='CustomerID' heading='Cust#' width='60' />\r
- <Rico:Column runat='server' ColName='ShipName' heading='Ship Name' width='150' />\r
- <Rico:Column runat='server' ColName='ShipCity' heading='Ship City' width='120' />\r
- <Rico:Column runat='server' ColName='ShipCountry' heading='Ship Country' width='90' />\r
- <Rico:Column runat='server' ColName='OrderDate' heading='Order Date' datatype='date' width='100' />\r
- <Rico:Column runat='server' ColName='ShippedDate' heading='Ship Date' datatype='date' width='100' />\r
-</GridColumns>\r
+<Rico:LiveGrid runat='server' id='ex2j' fmt="json" DefaultSort='OrderID' menuEvent='click' frozenColumns='1' highlightElem='cursorRow'>\r
+ <Rico:Table runat='server' TblName='orders' />\r
+ <Rico:TableCol runat='server' ColName='OrderID' heading='Order#' width='60' />\r
+ <Rico:TableCol runat='server' ColName='CustomerID' heading='Cust#' width='60' />\r
+ <Rico:TableCol runat='server' ColName='ShipName' heading='Ship Name' width='150' />\r
+ <Rico:TableCol runat='server' ColName='ShipCity' heading='Ship City' width='120' />\r
+ <Rico:TableCol runat='server' ColName='ShipCountry' heading='Ship Country' width='90' />\r
+ <Rico:TableCol runat='server' ColName='OrderDate' heading='Order Date' datatype='date' width='100' />\r
+ <Rico:TableCol runat='server' ColName='ShippedDate' heading='Ship Date' datatype='date' width='100' />\r
</Rico:LiveGrid>\r
\r
</body>\r
dim arEmpSql as string() = {"LastName","', '","FirstName"}\r
dim oSqlCompat=new sqlCompatibilty(app.dbDialect)\r
EmployeeID.SelectSql="select EmployeeID," & oSqlCompat.Concat(arEmpSql,false) & " from employees order by LastName,FirstName" \r
- app.OpenGridForm(ex8n)\r
+ app.OpenGridForm(nosession)\r
End Sub\r
\r
</script>\r
<hr>The data on this grid can be edited using pop-up forms. \r
Just click on a grid cell and then select Edit, Delete, or Add from the pop-up menu. \r
Updates are disabled on the database, so you will get an error message if you try to save.\r
-<p>Rather than requesting data from RicoQuery, this page is able to process the AJAX\r
-data requests itself. No session variables are used.\r
+<p>Each request for data is processed separately. No session variables are used.\r
+The disadvantage is that the query must be completely rebuilt every time - and just building\r
+the query requires an additional query to the database to get table metadata (primary keys, etc).\r
+This overhead is not required when session variables are used.\r
</div>\r
<p><strong>Orders Table (without sessions)</strong></p>\r
\r
\r
-<Rico:LiveGridEdit runat='server' id='ex8n' TableName='orders' DefaultSort='OrderID' FilterLocation='-1' sessions='false'>\r
+<Rico:LiveGridEdit runat='server' id='nosession' DefaultSort='OrderID' FilterLocation='-1' sessions='false'>\r
<Rico:CalendarControl runat='server' id='Cal' icon='rico-icon rico-calarrow' />\r
<Rico:TreeControl runat='server' id='CustomerTree' icon='rico-icon rico-dotbutton' source='CustTree.aspx' />\r
+\r
+ <Rico:Table runat='server' TblName='orders' />\r
<Rico:ColumnGroup runat='server' heading='Basic Info' />\r
- <Rico:Column runat='server' heading='Order#' width='60' ColName='OrderID' EntryType='B' ColData='<auto>' ConfirmDeleteColumn='true' />\r
- <Rico:Column runat='server' heading='Customer' width='160' ColName='CustomerID' EntryType='CL' InsertOnly='true' SelectCtl='CustomerTree' SelectSql="select CustomerID,CompanyName from customers order by CompanyName" filterUI='t' />\r
- <Rico:Column runat='server' heading='Sales Person' width='140' ColName='EmployeeID' EntryType='SL' filterUI='s' id='EmployeeID' />\r
- <Rico:Column runat='server' heading='Order Date' width='100' ColName='OrderDate' EntryType='D' ColData='Today' SelectCtl='Cal' />\r
- <Rico:Column runat='server' heading='Required Date' width='100' ColName='RequiredDate' EntryType='D' ColData='Today' SelectCtl='Cal' />\r
- <Rico:Column runat='server' heading='Net Sale' width='80' format='DOLLAR' Formula='select sum(UnitPrice*Quantity*(1.0-Discount)) from order_details d where d.OrderID=t.OrderID' />\r
+ <Rico:EditCol runat='server' heading='Order#' width='60' ColName='OrderID' EntryType='B' ColData='<auto>' ConfirmDeleteColumn='true' />\r
+ <Rico:EditCol runat='server' heading='Customer' width='160' ColName='CustomerID' EntryType='CL' InsertOnly='true' SelectCtl='CustomerTree' SelectSql="select CustomerID,CompanyName from customers order by CompanyName" filterUI='t' />\r
+ <Rico:EditCol runat='server' heading='Sales Person' width='140' ColName='EmployeeID' EntryType='SL' filterUI='m' id='EmployeeID' />\r
+ <Rico:EditCol runat='server' heading='Order Date' width='100' ColName='OrderDate' EntryType='D' ColData='Today' SelectCtl='Cal' />\r
+ <Rico:EditCol runat='server' heading='Required Date' width='100' ColName='RequiredDate' EntryType='D' ColData='Today' SelectCtl='Cal' />\r
+ <Rico:FormulaCol runat='server' heading='Net Sale' width='80' DataType='DOLLAR' Formula='select sum(UnitPrice*Quantity*(1.0-Discount)) from order_details d where d.OrderID=t.OrderID' />\r
\r
<Rico:ColumnGroup runat='server' heading='Ship To' />\r
- <Rico:Column runat='server' heading='Name' width='150' ColName='ShipName' EntryType='B' />\r
- <Rico:Column runat='server' heading='Address' width='150' ColName='ShipAddress' EntryType='B' />\r
- <Rico:Column runat='server' heading='City' width='80' ColName='ShipCity' EntryType='B' filterUI='s' />\r
- <Rico:Column runat='server' heading='Region' width='80' ColName='ShipRegion' EntryType='T' />\r
- <Rico:Column runat='server' heading='Postal Code' width='80' ColName='ShipPostalCode' EntryType='T' />\r
- <Rico:Column runat='server' heading='Country' width='90' ColName='ShipCountry' EntryType='N' filterUI='s' control="new Rico.TableColumn.link('http://en.wikipedia.org/wiki/{11}','_blank')" />\r
+ <Rico:EditCol runat='server' heading='Name' width='150' ColName='ShipName' EntryType='B' />\r
+ <Rico:EditCol runat='server' heading='Address' width='150' ColName='ShipAddress' EntryType='B' />\r
+ <Rico:EditCol runat='server' heading='City' width='120' ColName='ShipCity' EntryType='B' filterUI='m' />\r
+ <Rico:EditCol runat='server' heading='Region' width='80' ColName='ShipRegion' EntryType='T' />\r
+ <Rico:EditCol runat='server' heading='Postal Code' width='80' ColName='ShipPostalCode' EntryType='T' />\r
+ <Rico:EditCol runat='server' heading='Country' width='90' ColName='ShipCountry' EntryType='N' filterUI='s' control="new Rico.TableColumn.link('http://en.wikipedia.org/wiki/{11}','_blank')" />\r
</Rico:LiveGridEdit>\r
\r
</body>\r
<Rico:LoadClient checkQueryString='true' runat='server' />\r
<link href="../demo.css" type="text/css" rel="stylesheet" />\r
\r
-<style type="text/css">\r
-div.ricoLG_cell {\r
- white-space:nowrap;\r
-}\r
-</style>\r
</head>\r
<body>\r
\r
<a href='<%=Page.Request.ServerVariables("SCRIPT_NAME")%>?_action_ex2x=query&offset=0&page_size=10'>View the AJAX response (XML)</a>.\r
</div>\r
\r
-<Rico:LiveGrid runat='server' id='ex2x' TableName='orders' DefaultSort='OrderID' menuEvent='click' frozenColumns='1' highlightElem='cursorRow'>\r
- <Rico:Column runat='server' ColName='OrderID' heading='Order#' width='60' />\r
- <Rico:Column runat='server' ColName='CustomerID' heading='Cust#' width='60' />\r
- <Rico:Column runat='server' ColName='ShipName' heading='Ship Name' width='150' />\r
- <Rico:Column runat='server' ColName='ShipCity' heading='Ship City' width='120' />\r
- <Rico:Column runat='server' ColName='ShipCountry' heading='Ship Country' width='90' />\r
- <Rico:Column runat='server' ColName='OrderDate' heading='Order Date' datatype='date' width='100' />\r
- <Rico:Column runat='server' ColName='ShippedDate' heading='Ship Date' datatype='date' width='100' />\r
+<Rico:LiveGrid runat='server' id='ex2x' DefaultSort='OrderID' menuEvent='click' frozenColumns='1' highlightElem='cursorRow'>\r
+ <Rico:Table runat='server' TblName='orders' />\r
+ <Rico:TableCol runat='server' ColName='OrderID' heading='Order#' width='60' />\r
+ <Rico:TableCol runat='server' ColName='CustomerID' heading='Cust#' width='60' />\r
+ <Rico:TableCol runat='server' ColName='ShipName' heading='Ship Name' width='150' />\r
+ <Rico:TableCol runat='server' ColName='ShipCity' heading='Ship City' width='120' />\r
+ <Rico:TableCol runat='server' ColName='ShipCountry' heading='Ship Country' width='90' />\r
+ <Rico:TableCol runat='server' ColName='OrderDate' heading='Order Date' datatype='date' width='100' />\r
+ <Rico:TableCol runat='server' ColName='ShippedDate' heading='Ship Date' datatype='date' width='100' />\r
</Rico:LiveGrid>\r
\r
</body>\r
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">\r
<base target="content">\r
\r
-<Rico:LoadClient noTheme='' runat='server' />\r
+<Rico:LoadClient runat='server' />\r
\r
<script src="../menu.js" type="text/javascript"></script>\r
<link href="../menu.css" type="text/css" rel="stylesheet">\r
<li><a id="demo_ex1.aspx">LiveGrid sourced from HTML table</a>\r
<li><a id="demo_ex2xml.aspx">LiveGrid sourced from SQL database (xml)</a>\r
<li><a id="demo_ex2json.aspx">LiveGrid sourced from SQL database (json)</a>\r
+<li><a id="demo_ex2style.aspx">LiveGrid with custom column styles</a>\r
+<li><a id="demo_ex2notheme.aspx">LiveGrid with completely custom style</a>\r
<li><a id="demo_3grids.aspx">3 grids with drill-down</a>\r
<li><a id="demo_ShipperEdit.aspx">Editable LiveGrid (Shippers)</a>\r
<li><a id="demo_employees.aspx">Editable LiveGrid (Employees)</a>\r
<script type='text/javascript'>\r
var img_popup;\r
\r
-function photogrid_InitComplete() {\r
+function photos_InitComplete() {\r
// do something special when the mouse hovers over an image\r
- var c0=photogrid['grid'].columns[0];\r
+ var c0=photos.grid.columns[0];\r
for (var i=0; i<c0._img.length; i++) {\r
Rico.eventBind(c0._img[i],'mouseover',Rico.eventHandle(window,'img_mouseover'));\r
Rico.eventBind(c0._img[i],'mouseout',Rico.eventHandle(window,'img_mouseout'));\r
}\r
- img_popup=document.getElementById('img_popup');\r
+ img_popup=Rico.$('img_popup');\r
}\r
\r
function img_mouseover(e) {\r
}\r
\r
function UpdateGrid() {\r
- var tags=$('tags').value;\r
+ var tags=Rico.$('tags').value;\r
if (tags) {\r
- photogrid['buffer'].options.requestParameters=['tags='+tags];\r
- photogrid['grid'].filterHandler();\r
+ photos['buffer'].options.requestParameters=['tags='+tags];\r
+ photos['grid'].filterHandler();\r
} else {\r
alert('Please enter one or more keywords separated by commas');\r
}\r
</script>\r
\r
<style type="text/css">\r
-.ricoLG_bottom div.ricoLG_cell { height:80px; } /* thumbnails are 75x75 pixels */\r
#explanation * { font-size: 8pt; }\r
</style>\r
\r
<body>\r
\r
<div id='explanation'><form onsubmit='UpdateGrid(); return false;'>\r
-<p>Find 100 <a href="http://www.flickr.com">Flickr</a> photos tagged with the keywords you type below (separate words with commas):\r
+Base Library: <script type='text/javascript'>document.write(Rico.Lib+' '+Rico.LibVersion);</script>\r
+<hr><p>Find 100 <a href="http://www.flickr.com">Flickr</a> photos tagged with the keywords you type below (separate words with commas):\r
<p><input type='text' id='tags'>\r
<input type='submit' value='Get Photos'>\r
<p>Then try moving your cursor over each photo...\r
</form></div>\r
\r
-<Rico:LiveGrid runat='server' id='photogrid' prefetchBuffer='false' dataProvider='flickrPhotos.aspx' headingSort='hover'>\r
-<GridColumns>\r
+<Rico:LiveGrid runat='server' id='photos' prefetchBuffer='false' DataRowHt='80px' DataWrapText='true' dataProvider="'flickrPhotos.aspx'">\r
<Rico:Column runat='server' heading='Photo' width='90' control='new Rico.TableColumn.image()' />\r
<Rico:Column runat='server' heading='Title' width='100' />\r
<Rico:Column runat='server' heading='Owner' width='100' />\r
<Rico:Column runat='server' heading='Date Taken' width='100' DataType='datetime' />\r
<Rico:Column runat='server' heading='Tags' width='200' />\r
-</GridColumns>\r
</Rico:LiveGrid>\r
\r
<img id='img_popup' style='display:none;position:absolute;'>\r
ex1.AddDataRow()\r
ex1.AddCell(ProductName)\r
ex1.AddCell("$" & FormatNumber(Gross,0,-1,0,-1))\r
+ ex1.SetCellAttr("class","number")\r
ex1.AddCell("$" & FormatNumber(Discounts,0,-1,0,-1))\r
+ ex1.SetCellAttr("class","number")\r
ex1.AddCell("$" & FormatNumber(Gross-Discounts,0,-1,0,-1))\r
+ ex1.SetCellAttr("class","number")\r
pct=Discounts/Gross\r
ex1.AddCell(pct.toString("0%"))\r
+ ex1.SetCellAttr("class","number")\r
end sub\r
\r
Protected Overrides Sub Render(writer as HTMLTextWriter)\r
div.ricoLG_cell {\r
white-space:nowrap;\r
}\r
+.number {\r
+ text-align: right;\r
+}\r
</style>\r
\r
</head>\r
</div>\r
\r
<Rico:SimpleGrid runat='server' id='ex1' FrozenCols='1'>\r
-<GridColumns>\r
<Rico:Column runat='server' width='200' />\r
- <Rico:Column runat='server' spec='specQty' />\r
- <Rico:Column runat='server' spec='specQty' />\r
- <Rico:Column runat='server' spec='specQty' />\r
- <Rico:Column runat='server' spec='specQty' />\r
-</GridColumns>\r
+ <Rico:Column runat='server' />\r
+ <Rico:Column runat='server' />\r
+ <Rico:Column runat='server' />\r
+ <Rico:Column runat='server' />\r
</Rico:SimpleGrid>\r
\r
</body>\r
Rico.eventBind(imgctl._img[i],'mouseover',Rico.eventHandle(window,'img_mouseover'));\r
Rico.eventBind(imgctl._img[i],'mouseout',Rico.eventHandle(window,'img_mouseout'));\r
}\r
- img_popup=document.getElementById('img_popup');\r
+ img_popup=Rico.$('img_popup');\r
});\r
\r
function img_mouseover(e) {\r
}\r
\r
function UpdateGrid() {\r
- var tags=document.getElementById('tags').value;\r
+ var tags=Rico.$('tags').value;\r
if (tags) {\r
photoGrid.resetContents(false);\r
photoBuffer.fetchData=true; // force another XML fetch\r
FilterAllToken : '___ALL___', // select box value to use to indicate ALL
columnSpecs : []
};
- this.colWidths = [];
this.hdrCells=[];
this.headerColCnt=0;
this.headerRowIdx=0; // row in header which gets resizers (no colspan's in this row)
SORT_ASC: "ASC",
SORT_DESC: "DESC",
- MINWIDTH: 10,
- DOLLAR: {type:'number', prefix:'$', decPlaces:2, ClassName:'alignright'},
- EURO: {type:'number', prefix:'€', decPlaces:2, ClassName:'alignright'},
- PERCENT: {type:'number', suffix:'%', decPlaces:2, multiplier:100, ClassName:'alignright'},
- QTY: {type:'number', decPlaces:0, ClassName:'alignright'},
- DEFAULT: {type:"showTags"}
+ MINWIDTH: 10
}
this.mouseOutHandler = Rico.eventHandle(this,'handleMouseOut');
this.fieldName = 'col'+this.index;
+ this.format={type:"text"};
var spec = liveGrid.options.columnSpecs[colIdx];
- this.format=Rico.extend( {}, Rico.ColumnConst.DEFAULT);
- switch (typeof spec) {
- case 'object':
- if (typeof spec.format=='string') Rico.extend(this.format, Rico.ColumnConst[spec.format.toUpperCase()]);
- Rico.extend(this.format, spec);
- break;
- case 'string':
- if (spec.slice(0,4)=='spec') spec=spec.slice(4).toUpperCase(); // for backwards compatibility
- if (typeof Rico.ColumnConst[spec]=='object') Rico.extend(this.format, Rico.ColumnConst[spec]);
- break;
- }
+ if (typeof spec == 'object') Rico.extend(this.format, spec);
Rico.addClass(this.dataColDiv, this.colClassName());
this.visible=true;
if (typeof this.format.visible=='boolean') this.visible=this.format.visible;
clearCell: function(rowIndex) {
var gridCell=this.cell(rowIndex);
this._clear(gridCell,rowIndex);
- if (!this.liveGrid.buffer) return;
- var acceptAttr=this.liveGrid.buffer.options.acceptAttr;
- for (var k=0; k<acceptAttr.length; k++) {
- switch (acceptAttr[k]) {
- case 'style': gridCell.style.cssText=''; break;
- case 'class': gridCell.className=''; break;
- default: gridCell['_'+acceptAttr[k]]=''; break;
- }
- }
+ if (this.liveGrid.buffer && this.liveGrid.buffer.options.acceptStyle) gridCell.style.cssText='';
},
dataTable: function() {
fixedHdrRows : 0,
canFilter : true, // does buffer object support filtering?
isEncoded : true, // is the data received via ajax html encoded?
- acceptAttr : [] // attributes that can be copied from original/ajax data (e.g. className, style, id)
+ acceptStyle : false // copy style from original/ajax data?
};
Rico.extend(this.options, options || {});
if (dataTable) {
this.loadRowsFromTable(dataTable,this.options.fixedHdrRows);
+ dataTable.parentNode.removeChild(dataTable); // delete the data once it has been loaded
} else {
this.clear();
}
},
loadRowsFromTable: function(tableElement,firstRow) {
- var newRows = new Array();
+ var newRows = [];
var trs = tableElement.getElementsByTagName("tr");
for ( var i=firstRow || 0; i < trs.length; i++ ) {
- var row = new Array();
+ var row = [];
var cells = trs[i].getElementsByTagName("td");
for ( var j=0; j < cells.length ; j++ )
row[j]=cells[j].innerHTML;
dom2jstable: function(rowsElement) {
Rico.log('dom2jstable: encoded='+this.options.isEncoded);
- var newRows = new Array();
+ var newRows = [];
var trs = rowsElement.getElementsByTagName("tr");
for ( var i=0; i < trs.length; i++ ) {
- var row = new Array();
+ var row = [];
var cells = trs[i].getElementsByTagName("td");
for ( var j=0; j < cells.length ; j++ )
row[j]=Rico.getContentAsString(cells[j],this.options.isEncoded);
return newRows;
},
- dom2jstableAttr: function(rowsElement,firstRow) {
- var acceptAttr=this.options.acceptAttr;
- Rico.log("dom2jstableAttr start, # attr="+acceptAttr.length);
- var newRows = new Array();
- var trs = rowsElement.getElementsByTagName("tr");
- for ( var i=firstRow || 0; i < trs.length; i++ ) {
- var row = new Array();
- var cells = trs[i].getElementsByTagName("td");
- for ( var j=0; j < cells.length ; j++ ) {
- row[j]={};
- for (var k=0; k<acceptAttr.length; k++)
- row[j]['_'+acceptAttr[k]]=cells[j].getAttribute(acceptAttr[k]);
- if (Rico.isIE) row[j]._class=cells[j].getAttribute('className');
- }
- newRows.push( row );
- }
- Rico.log("dom2jstableAttr end");
- return newRows;
- },
-
_blankRow: function() {
var newRow=[];
for (var i=0; i<this.liveGrid.columns.length; i++) {
return this.isVisible(bufrow) && col < this.rows[bufrow].length ? this.rows[bufrow][col] : null;
},
- getWindowAttr: function(windowRow,col) {
+ getWindowStyle: function(windowRow,col) {
var bufrow=this.bufferRow(windowRow);
- return this.attr && this.isVisible(bufrow) && col < this.attr[bufrow].length ? this.attr[bufrow][col] : null;
+ return this.attr && this.isVisible(bufrow) && col < this.attr[bufrow].length ? this.attr[bufrow][col] : '';
},
getWindowValue: function(windowRow,col) {
getRows: function(start, count) {
var begPos = start - this.startPos;
var endPos = Math.min(begPos + count,this.size);
- var results = new Array();
+ var results = [];
for ( var i=begPos; i < endPos; i++ ) {
results.push(this.rows[i]);
}
// create new tables
for (i=0; i<3; i++) {
this.tabs[i] = document.createElement("table");
- this.tabs[i].className = 'ricoLG_table';
+ this.tabs[i].className = (i < 2) ? 'ricoLG_table' : 'ricoLG_scrollTab';
this.tabs[i].border=0;
this.tabs[i].cellPadding=0;
this.tabs[i].cellSpacing=0;
// set headings
for (i=0; i<2; i++) {
this.thead[i]=this.tabs[i].createTHead();
- Rico.addClass(this.tabs[i],'ricoLG_top');
- //this.thead[i].className='ricoLG_top';
+ //Rico.addClass(this.tabs[i],'ricoLG_top');
+ this.thead[i].className='ricoLG_top';
if (Rico.theme.gridheader) Rico.addClass(this.thead[i],Rico.theme.gridheader);
}
// set bodies
switch (fmt.filterUI.charAt(0)) {
case 't':
// text field
- field=Rico.createFormField(divs[1],'input','text',name,name);
+ field=Rico.createFormField(divs[1],'input',Rico.inputtypes.search ? 'search' : 'text',name,name);
var size=fmt.filterUI.match(/\d+/);
field.maxLength=fmt.Length || 50;\r
field.size=size ? parseInt(size,10) : 10;
- divs[1].appendChild(Rico.clearButton(Rico.eventHandle(col,'filterClear')));
+ if (field.type != 'search') divs[1].appendChild(Rico.clearButton(Rico.eventHandle(col,'filterClear')));
if (col.filterType==Rico.ColumnConst.USERFILTER && col.filterOp=='LIKE') {
var v=col.filterValues[0];
if (v.charAt(0)=='*') v=v.substr(1);
for (r=0; r<hdrSrc.length; r++) {
cells=hdrSrc[r].cells;
for (c=0,h=0; cells.length > 0; c++) {
- if (cells[0].className=='ricoFrozen') {
+ if (Rico.hasClass(cells[0],'ricoFrozen')) {
if (r==this.headerRowIdx) this.options.frozenColumns=c+1;
} else {
h=1;
Rico.extend(this, new Rico.TableColumnBase());
this.baseInit(liveGrid,colIdx,hdrInfo,tabIdx);
this.buffer=liveGrid.buffer;
- if (typeof(this.format.type)!='string' || this.format.EntryType=='tinyMCE') this.format.type='raw';
+ if (typeof(this.format.type)!='string' || this.format.EntryType=='tinyMCE') this.format.type='html';
if (typeof this.isNullable!='boolean') this.isNullable = /number|date/.test(this.format.type);
- this.isText = /raw|text|showTags/.test(this.format.type);
+ this.isText = /html|text/.test(this.format.type);
Rico.log(" sortable="+this.sortable+" filterable="+this.filterable+" hideable="+this.hideable+" isNullable="+this.isNullable+' isText='+this.isText);
this.fixHeaders(this.liveGrid.tableId, this.options.hdrIconsFirst);
if (this['format_'+this.format.type]) {
},
format_text: function(v) {
- if (typeof v!='string')
- return ' ';
- else
- return Rico.stripTags(v);
-},
-
-format_showTags: function(v) {
if (typeof v!='string')
return ' ';
else
},
// converts GMT/UTC to local time
-format_UTCasLocalTime: function(v) {
+format_utcaslocaltime: function(v) {
if (typeof v=='undefined' || v=='' || v==null)
return ' ';
else {
return this.buffer.getWindowCell(windowRow,this.index);
},
-getBufferAttr: function(windowRow) {
- return this.buffer.getWindowAttr(windowRow,this.index);
+getBufferStyle: function(windowRow) {
+ return this.buffer.getWindowStyle(windowRow,this.index);
},
setValue: function(windowRow,newval) {
}
var gridCell=this.cell(windowRow);
this._display(bufval,gridCell,windowRow);
- var acceptAttr=this.buffer.options.acceptAttr;
- if (acceptAttr.length==0) return;
- var bufAttr=this.getBufferAttr(windowRow);
- if (bufAttr==null) return;
- for (var k=0; k<acceptAttr.length; k++) {
- bufAttr=bufAttr['_'+acceptAttr[k]] || '';
- switch (acceptAttr[k]) {
- case 'style': gridCell.style.cssText=bufAttr; break;
- case 'class': gridCell.className=bufAttr; break;
- default: gridCell['_'+acceptAttr[k]]=bufAttr; break;
- }
+ if (this.buffer.options.acceptStyle) {
+ gridCell.style.cssText=this.getBufferStyle(windowRow);
}
}
this.ajaxOptions.onComplete = function(xhr) { self.ajaxUpdate(offset,xhr); };
new Rico.ajaxRequest(this.dataSource, this.ajaxOptions);
} else {
- this.ajaxOptions.onComplete = function(newRows, newAttr, totalRows, errMsg) { self.jsUpdate(offset, newRows, newAttr, totalRows, errMsg); };
+ this.ajaxOptions.onComplete = function(newRows, newStyle, totalRows, errMsg) { self.jsUpdate(offset, newRows, newStyle, totalRows, errMsg); };
this.dataSource(this.ajaxOptions);
}
} else {
},
// used by both XML and SQL buffers
- jsUpdate: function(startPos, newRows, newAttr, totalRows, errMsg) {
+ jsUpdate: function(startPos, newRows, newStyle, totalRows, errMsg) {
this.clearTimer();
this.processingRequest=false;
Rico.log("jsUpdate: "+arguments.length);
this.foundRowCount = true;
Rico.log("jsUpdate: found RowCount="+this.rowcntContent);
}
- this.updateBuffer(startPos, newRows, newAttr);
+ this.updateBuffer(startPos, newRows, newStyle);
if (this.options.onAjaxUpdate)
this.options.onAjaxUpdate();
this.updateGrid(startPos);
// process children of <ajax-response>
var response = xmlDoc.getElementsByTagName("ajax-response");
- if (response == null || response.length != 1) return false;
+ if (response == null || response.length != 1) {
+ alert("Received invalid response from server");
+ return false;
+ }
+ Rico.log("Processing ajax-response");
this.rcvdRows = 0;
this.rcvdRowCount = false;
var ajaxResponse=response[0];
this.rcvdOffset = rowsElement.getAttribute("offset");
Rico.log("ajaxUpdate: rcvdOffset="+this.rcvdOffset);
var newRows = this.dom2jstable(rowsElement);
- var newAttr = (this.options.acceptAttr.length > 0) ? this.dom2jstableAttr(rowsElement) : false;
+ var newStyle = (this.options.acceptStyle) ? this.dom2jstableStyle(rowsElement) : false;
this.rcvdRows = newRows.length;
- this.updateBuffer(startPos, newRows, newAttr);
+ this.updateBuffer(startPos, newRows, newStyle);
return true;
},
+ dom2jstableStyle: function(rowsElement,firstRow) {
+ var acceptStyle=this.options.acceptStyle;
+ Rico.log("dom2jstableStyle start");
+ var newRows = [];
+ var trs = rowsElement.getElementsByTagName("tr");
+ for ( var i=firstRow || 0; i < trs.length; i++ ) {
+ var row = [];
+ var cells = trs[i].getElementsByTagName("td");
+ for ( var j=0; j < cells.length ; j++ ) {
+ row[j]=cells[j].getAttribute('style') || '';
+ }
+ newRows.push( row );
+ }
+ Rico.log("dom2jstableStyle end");
+ return newRows;
+ },
+
processResponseJSON: function(startPos,request) {
var json = Rico.getJSON(request);
if (!json || json == null) {
}
this.rcvdRows = json.rows.length;
- this.updateBuffer(startPos, json.rows);
+ this.updateBuffer(startPos, json.rows, json.styles);
return true;
},
// specific to XML buffer
- updateBuffer: function(start, newRows, newAttr) {
+ updateBuffer: function(start, newRows, newStyle) {
this.baseRows = newRows;
- this.attr = newAttr;
+ this.attr = newStyle;
Rico.log("updateBuffer: # of rows="+this.rcvdRows);
this.rcvdRowCount=true;
this.rowcntContent=this.rcvdRows;
this.ajaxOptions.onComplete = function(xhr) { self.ajaxUpdate(bufferStartPos, xhr); };
new Rico.ajaxRequest(this.dataSource, this.ajaxOptions);
} else {
- this.ajaxOptions.onComplete = function(newRows, newAttr, totalRows, errMsg) { self.jsUpdate(bufferStartPos, newRows, newAttr, totalRows, errMsg); };
+ this.ajaxOptions.onComplete = function(newRows, newStyle, totalRows, errMsg) { self.jsUpdate(bufferStartPos, newRows, newStyle, totalRows, errMsg); };
this.dataSource(this.ajaxOptions);
}
},
return adjustedOffset;
},
- updateBuffer: function(start, newRows, newAttr) {
+ updateBuffer: function(start, newRows, newStyle) {
Rico.log("updateBuffer: start="+start+", # of rows="+this.rcvdRows);
if (this.rows.length == 0) { // initial load
this.rows = newRows;
- this.attr = newAttr;
+ this.attr = newStyle;
this.startPos = start;
} else if (start > this.startPos) { //appending
if (this.startPos + this.rows.length < start) {
this.rows = newRows;
- this.attr = newAttr;
+ this.attr = newStyle;
this.startPos = start;
} else {
this.rows = this.rows.concat( newRows.slice(0, newRows.length));
- if (this.attr) this.attr = this.attr.concat( newAttr.slice(0, newAttr.length));
+ if (this.attr) this.attr = this.attr.concat( newStyle.slice(0, newStyle.length));
if (this.rows.length > this.maxBufferSize) {
var fullSize = this.rows.length;
this.rows = this.rows.slice(this.rows.length - this.maxBufferSize, this.rows.length);
this.dataSource(this.ajaxOptions);
},
- _jsExport: function(newRows, newAttr, totalRows, errMsg) {
+ _jsExport: function(newRows, newStyle, totalRows, errMsg) {
Rico.log("_jsExport: "+arguments.length);
if (errMsg) {
Rico.log("_jsExport: received error="+errMsg);
};
Rico.extend(this.options, liveGrid.options);
var self=this;
- this.hasWF2=(document.implementation && document.implementation.hasFeature && document.implementation.hasFeature('WebForms', '2.0'));
this.menu=liveGrid.menu;
this.menu.options.dataMenuHandler=function(grid,r,c,onBlankRow) { return self.editMenu(grid,r,c,onBlankRow); };
this.menu.ignoreClicks();
Rico.eventBind(document,"click", Rico.eventHandle(this,'clearSaveMsg'));
this.extraMenuItems=[];
this.responseHandler=function() { self.processResponse(); };
- Rico.log("Rico.TableEdit.initialize complete, hasWF2="+this.hasWF2);
+ Rico.log("Rico.TableEdit.initialize complete");
},
createKeyArray: function() {
if (!fmt.Help) fmt.Help=fmt.dateFmt;
if (typeof fmt.min=='string') fmt.min=Rico.setISO8601(fmt.min) || new Date(fmt.min);
if (typeof fmt.max=='string') fmt.max=Rico.setISO8601(fmt.max) || new Date(fmt.max);
- if (this.hasWF2) {
+ if (Rico.inputtypes.date) {
field=Rico.createFormField(entry,'input','date',name,name);
field.required=fmt.required;
if (fmt.min) field.min=Rico.toISO8601String(fmt.min,3);
case 'I':
if (!fmt.isNullable) fmt.required=true;
if (!fmt.pattern) fmt.pattern='int-signed';
- if (this.hasWF2) {
+ if (Rico.inputtypes.number) {
field=Rico.createFormField(entry,'input','number',name,name);
field.required=fmt.required;
field.min=fmt.min;
// menu items for filtering
this.filtermenu.clearMenu();
- if (column.canFilter() && !column.format.filterUI && (!onBlankRow || column.filterType == Rico.ColumnConst.USERFILTER)) {
+ if (column.canFilter()) {
this.addSubMenuItem(Rico.getPhraseById("gridmenuFilterBy",column.displayName), this.filtermenu, false);
- column.userFilter=column.getValue(r);
- if (column.filterType == Rico.ColumnConst.USERFILTER) {
- this.filtermenu.addMenuItemId("gridmenuRemoveFilter", function() { column.setUnfiltered(false); }, true);
- if (column.filterOp=='LIKE')
- this.filtermenu.addMenuItemId("gridmenuChgKeyword", function() { livegrid.openKeyword(c); }, true);
- if (column.filterOp=='NE' && !onBlankRow)
- this.filtermenu.addMenuItemId("gridmenuExcludeAlso", function() { column.addFilterNE(); }, true);
- } else if (!onBlankRow) {
- this.filtermenu.addMenuItemId("gridmenuInclude", function() { column.setFilterEQ(); }, true);
- this.filtermenu.addMenuItemId("gridmenuGreaterThan", function() { column.setFilterGE(); }, column.userFilter!='');
- this.filtermenu.addMenuItemId("gridmenuLessThan", function() { column.setFilterLE(); }, column.userFilter!='');
- if (column.isText)
- this.filtermenu.addMenuItemId("gridmenuContains", function() { livegrid.openKeyword(c); }, true);
- this.filtermenu.addMenuItemId("gridmenuExclude", function() { column.setFilterNE(); }, true);
+ if (!column.format.filterUI && (!onBlankRow || column.filterType == Rico.ColumnConst.USERFILTER)) {
+ column.userFilter=column.getValue(r);
+ if (column.filterType == Rico.ColumnConst.USERFILTER) {
+ this.filtermenu.addMenuItemId("gridmenuRemoveFilter", function() { column.setUnfiltered(false); }, true);
+ if (column.filterOp=='LIKE')
+ this.filtermenu.addMenuItemId("gridmenuChgKeyword", function() { livegrid.openKeyword(c); }, true);
+ if (column.filterOp=='NE' && !onBlankRow)
+ this.filtermenu.addMenuItemId("gridmenuExcludeAlso", function() { column.addFilterNE(); }, true);
+ } else if (!onBlankRow) {
+ this.filtermenu.addMenuItemId("gridmenuInclude", function() { column.setFilterEQ(); }, true);
+ this.filtermenu.addMenuItemId("gridmenuGreaterThan", function() { column.setFilterGE(); }, column.userFilter!='');
+ this.filtermenu.addMenuItemId("gridmenuLessThan", function() { column.setFilterLE(); }, column.userFilter!='');
+ if (column.isText)
+ this.filtermenu.addMenuItemId("gridmenuContains", function() { livegrid.openKeyword(c); }, true);
+ this.filtermenu.addMenuItemId("gridmenuExclude", function() { column.setFilterNE(); }, true);
+ }
}
if (livegrid.filterCount() > 0) {
- this.filtermenu.addMenuItemId("gridmenuRefresh", function() { livegrid.filterHandler(); }, true);
this.filtermenu.addMenuItemId("gridmenuRemoveAll", function() { livegrid.clearFilters(); }, true);
}
- } else if (livegrid.filterCount() > 0) {
- this.addSubMenuItem(Rico.getPhraseById("gridmenuFilterBy",column.displayName), this.filtermenu, false);
- this.filtermenu.addMenuItemId("gridmenuRemoveAll", function() { livegrid.clearFilters(); }, true);
+ this.filtermenu.addMenuItemId("gridmenuRefresh", function() { livegrid.filterHandler(); }, true);
}
// menu items for Print/Export
this.exportmenu.clearMenu();
- if (buffer.printVisibleSQL && typeof(buffer.dataSource)=='string') {
- // SQL buffer
- this.addSubMenuItem(Rico.getPhraseById('gridmenuExport'),this.exportmenu,false);
- this.exportmenu.addMenuItemId("gridmenuExportVis2Web", function() { buffer.printVisibleSQL('html'); });
- this.exportmenu.addMenuItemId("gridmenuExportAll2Web", function() { buffer.printAllSQL('html'); }, buffer.totalRows <= maxprint);
- this.exportmenu.addMenuBreak();
- this.exportmenu.addMenuItemId("gridmenuExportVis2SS", function() { buffer.printVisibleSQL('xl'); });
- this.exportmenu.addMenuItemId("gridmenuExportAll2SS", function() { buffer.printAllSQL('xl'); }, buffer.totalRows <= maxprint);
- } else if (maxprint > 0 && totrows>0) {
- // any other buffer
+ if (maxprint > 0) {
this.addSubMenuItem(Rico.getPhraseById('gridmenuExport'),this.exportmenu,false);
- this.exportmenu.addMenuItemId("gridmenuExportVis2Web", function() { buffer.printVisible(); });
- this.exportmenu.addMenuItemId("gridmenuExportAll2Web", function() { buffer.printAll(); }, buffer.totalRows <= maxprint);
+ if (buffer.printVisibleSQL && typeof(buffer.dataSource)=='string') {
+ // SQL buffer
+ this.exportmenu.addMenuItemId("gridmenuExportVis2Web", function() { buffer.printVisibleSQL('html'); });
+ this.exportmenu.addMenuItemId("gridmenuExportAll2Web", function() { buffer.printAllSQL('html'); }, buffer.totalRows <= maxprint);
+ this.exportmenu.addMenuBreak();
+ this.exportmenu.addMenuItemId("gridmenuExportVis2SS", function() { buffer.printVisibleSQL('xl'); });
+ this.exportmenu.addMenuItemId("gridmenuExportAll2SS", function() { buffer.printAllSQL('xl'); }, buffer.totalRows <= maxprint);
+ } else {
+ // any other buffer
+ this.addSubMenuItem(Rico.getPhraseById('gridmenuExport'),this.exportmenu,false);
+ this.exportmenu.addMenuItemId("gridmenuExportVis2Web", function() { buffer.printVisible(); });
+ this.exportmenu.addMenuItemId("gridmenuExportAll2Web", function() { buffer.printAll(); }, buffer.totalRows <= maxprint);
+ }
}
// menu items for hide/unhide
if (!this.tabs[i]) return;
this.hdrTabs[i]=document.getElementById(this.tableId+'_tab'+i+'h');
if (!this.hdrTabs[i]) return;
- //if (i==0) this.tabs[i].style.position='absolute';
- //if (i==0) this.tabs[i].style.left='0px';
- //this.hdrTabs[i].style.position='absolute';
- //this.hdrTabs[i].style.top='0px';
- //this.hdrTabs[i].style.zIndex=1;
this.thead[i]=this.hdrTabs[i];
this.tbody[i]=this.tabs[i];
this.headerColCnt = this.getColumnInfo(this.hdrTabs[i].rows);
alert('ERROR: no columns found in "'+this.tableId+'"');
return;
}
- //this.hdrHt=Math.max(Rico.nan2zero(this.hdrTabs[0].offsetHeight),this.hdrTabs[1].offsetHeight);
- //for (i=0; i<2; i++) {
- // if (i==0) this.tabs[i].style.top=this.hdrHt+'px';
- //}
this.createColumnArray('SimpleGridColumn');
this.pageSize=this.columns[0].dataColDiv.childNodes.length;
this.sizeDivs();
color:#000;\r
}\r
\r
-.ricoLG_top {\r
+table.ricoLG_table {\r
border-top:1px solid #523A0B !important;\r
}\r
\r
background-color: #FFF !important;\r
}\r
\r
-.ricoLG_bottom div.ricoLG_cell, table.ricoLG_top, table.ricoLG_top thead th, table.ricoLG_top thead td, table.ricoLiveGrid td, table.ricoLiveGrid th, .ricoLG_bottom th, .ricoLG_bottom td {\r
+.ricoLG_bottom div.ricoLG_cell, table.ricoLG_table, thead.ricoLG_top th, thead.ricoLG_top td, table.ricoLiveGrid td, table.ricoLiveGrid th, .ricoLG_bottom th, .ricoLG_bottom td {\r
border-color: #CCC !important;\r
}\r
\r
border: 2px solid black;\r
}\r
\r
-.ricoLG_table, table.ricoLiveGrid {\r
+.ricoLG_table, .ricoLG_scrollTab, table.ricoLiveGrid {\r
margin: 0px;\r
padding: 0px;\r
border-right: 1px solid silver;\r
width:100px;\r
}\r
\r
-table.ricoLG_top thead div.ricoLG_col {\r
+thead.ricoLG_top div.ricoLG_col {\r
position:relative;\r
}\r
\r
-table.ricoLG_top thead div.ricoLG_Resize {\r
+thead.ricoLG_top div.ricoLG_Resize {\r
position:absolute;\r
width:5px;\r
height:100%;\r
border-width: 0px 0px 1px 0px;\r
}\r
\r
-table.ricoLG_top, table.ricoLiveGrid {\r
+table.ricoLG_table, table.ricoLiveGrid {\r
border-top: 1px solid silver;\r
}\r
\r
-table.ricoLG_top thead th, table.ricoLG_top thead td, table.ricoLiveGrid td, table.ricoLiveGrid th {\r
+thead.ricoLG_top th, thead.ricoLG_top td, table.ricoLiveGrid td, table.ricoLiveGrid th {\r
border-style: solid;\r
border-color: silver;\r
border-width: 0px 0px 1px 1px;\r
}\r
\r
-* html table.ricoLG_top thead th, * html table.ricoLG_top thead td, * html table.ricoLiveGrid td, * html table.ricoLiveGrid th {\r
+* html thead.ricoLG_top th, * html thead.ricoLG_top td, * html table.ricoLiveGrid td, * html table.ricoLiveGrid th {\r
position: relative; /* IE6 only */\r
}\r
\r
padding-bottom:3px;\r
}\r
\r
-div.ricoLG_messageDiv {\r
+.ricoLG_messageDiv {\r
font-weight:bold;\r
font-size:larger;\r
text-align:center;\r
padding:1em;\r
+ background-color: #EEE;\r
opacity:0.8;\r
}\r
\r
font-weight: bold;\r
}\r
\r
-div.alignleft {\r
- text-align: left;\r
-}\r
-\r
-div.aligncenter {\r
- text-align: center;\r
-}\r
-\r
-div.alignright {\r
- text-align: right;\r
-}\r
-\r
span.ricoSessionTimer {\r
background-color:black;\r
color:white;\r
}\r
\r
-table.ricoLG_top thead option, table.ricoLG_top thead select, table.ricoLG_top thead input {\r
+thead.ricoLG_top option, thead.ricoLG_top select, thead.ricoLG_top input {\r
font-weight: normal;\r
font-size: 8pt !important;\r
padding: 1px;\r
.ricoLG_bottom a, .ricoLG_bottom a:link { color: #325C91; }
.ricoLG_bottom a:visited { color: #466C8E; }
.ricoLG_bottom a:hover, .ricoLG_bottom a:focus { color: #1E4C94; }
-.ricoLG_table {
- background: #f1f8ee;
+.ricoLG_bottom {
+ background-color: #f1f8ee;
color: #033;
}
div.ricoLG_messageDiv {
var Rico = {
Version: '3.0b2',
theme: {},
+ onLoadCallbacks: [],
+ windowIsLoaded: false,
+ preloadMsgs: '',
+ inputtypes: {search: 0, number: 0, range: 0, color: 0, tel: 0, url: 0, email: 0, date: 0, month: 0, week: 0, time: 0, datetime: 0, 'datetime-local': 0},
init : function() {
try { // fix IE background image flicker (credit: www.mister-pixel.com)
document.execCommand("BackgroundImageCache", false, true);
} catch(err) {}
- if (typeof Rico_CONFIG == 'object') {
- if (Rico_CONFIG.jsDir) this.setPaths(Rico_CONFIG.jsDir);
- this.setBackgroundStyles();
- if (Rico_CONFIG.enableLogging) this.enableLogging();
- }
- this.preloadMsgs='';
- this.baseHref= location.protocol + "//" + location.host;
- this.windowIsLoaded=false;
- this.onLoadCallbacks=[];
+ if (typeof Rico_CONFIG == 'object') this.setConfig(Rico_CONFIG);
this.onLoad(function() { Rico.log('Pre-load messages:\n'+Rico.preloadMsgs); });
},
+ // called by rico2xxx.js
_bindLoadEvent : function() {
Rico.eventBind(window,"load", Rico.eventHandle(Rico,'windowLoaded'));
},
- setPaths : function(jsDir) {
- this.jsDir = jsDir;
- },
-
- setBackgroundStyles: function() {
+ setConfig : function(ConfigObj) {
var el = document.createElement('style');
document.getElementsByTagName('head')[0].appendChild(el);
if (!window.createPopup) { /* For Safari */
el.appendChild(document.createTextNode(''));
}
var s = document.styleSheets[document.styleSheets.length - 1];
- this.addCssRule(s,'.rico-icon',Rico_CONFIG.imgIcons,'no-repeat');
- this.addCssRule(s,'.ricoLG_Resize',Rico_CONFIG.imgResize,'repeat');
- if (Rico_CONFIG.imgHeading) {
- var repeat='repeat-x scroll left center';
- this.addCssRule(s,'tr.ricoLG_hdg th',Rico_CONFIG.imgHeading,repeat);
- this.addCssRule(s,'tr.ricoLG_hdg td',Rico_CONFIG.imgHeading,repeat);
- this.addCssRule(s,'table.ricoLiveGrid thead td',Rico_CONFIG.imgHeading,repeat);
- this.addCssRule(s,'table.ricoLiveGrid thead th',Rico_CONFIG.imgHeading,repeat);
- this.addCssRule(s,'.ricoTitle',Rico_CONFIG.imgHeading,repeat);
- this.addCssRule(s,'.Rico_accTitle',Rico_CONFIG.imgHeading,repeat);
+ this.addCssBackgroundRule(s,'.rico-icon',ConfigObj.imgIcons,'no-repeat');
+ this.addCssBackgroundRule(s,'.ricoLG_Resize',ConfigObj.imgResize,'repeat');
+ if (ConfigObj.imgHeading) {
+ var repeat='repeat-x';
+ var pos='left center';
+ this.addCssBackgroundRule(s,'tr.ricoLG_hdg th',ConfigObj.imgHeading,repeat,pos);
+ this.addCssBackgroundRule(s,'tr.ricoLG_hdg td',ConfigObj.imgHeading,repeat,pos);
+ this.addCssBackgroundRule(s,'table.ricoLiveGrid thead td',ConfigObj.imgHeading,repeat,pos);
+ this.addCssBackgroundRule(s,'table.ricoLiveGrid thead th',ConfigObj.imgHeading,repeat,pos);
+ this.addCssBackgroundRule(s,'.ricoTitle',ConfigObj.imgHeading,repeat,pos);
+ this.addCssBackgroundRule(s,'.Rico_accTitle',ConfigObj.imgHeading,repeat,pos);
}
+
+ if (ConfigObj.enableLogging) this.enableLogging();
+ if (ConfigObj.enableHTML5) this._CheckInputTypes();
},
- addCssRule: function(sheet,selector,imageUrl,repeat) {
+ addCssBackgroundRule: function(sheet,selector,imageUrl,repeat,position) {
if (!imageUrl) return;
- var rule="background:url('"+imageUrl+"') "+repeat;
+ this.addCssRule(sheet,selector,"background-image:url('"+imageUrl+"')");
+ this.addCssRule(sheet,selector,"background-repeat:"+repeat);
+ if (position) this.addCssRule(sheet,selector,"background-position:"+position);
+ },
+
+ addCssRule: function(sheet,selector,rule) {
if (sheet.addRule) {
sheet.addRule(selector, rule);
} else if (sheet.insertRule) {
}
},
- languageInclude : function(lang2) {
- var el = document.createElement('script');
- el.type = 'text/javascript';
- el.src = this.jsDir+"ricoLocale_"+lang2+".js";
- document.getElementsByTagName('head')[0].appendChild(el);
- },
-
// called by the document onload event
windowLoaded: function() {
this.windowIsLoaded=true;
if (callback) callback();
}
},
+
+ // check for availability of HTML5 input types
+ _CheckInputTypes: function() {
+ var i = document.createElement("input");
+ for (var itype in this.inputtypes) {
+ i.setAttribute("type", "text");
+ i.setAttribute("type", itype);
+ this.inputtypes[itype]=(i.type !== "text");
+ }
+ },
onLoad: function(callback,frontOfQ) {
if (frontOfQ)
* Format a positive number (integer or float)
* @param posnum number to format
* @param decPlaces the number of digits to display after the decimal point
- * @param thouSep the character to use as the thousands separator
- * @param decPoint the character to use as the decimal point
+ * @param thouSep boolean indicating whether to insert thousands separator
* @returns formatted string
*/
-formatPosNumber: function(posnum,decPlaces,thouSep,decPoint) {
+formatPosNumber: function(posnum,decPlaces,thouSep) {
var a=posnum.toFixed(decPlaces).split(/\./);
if (thouSep) {
var rgx = /(\d+)(\d{3})/;
while (rgx.test(a[0])) {
- a[0]=a[0].replace(rgx, '$1'+thouSep+'$2');
+ a[0]=a[0].replace(rgx, '$1'+Rico.thouSep+'$2');
}
}
- return a.join(decPoint);
+ return a.join(Rico.decPoint);
},
/**
* @param fmt may contain any of the following:<dl>
* <dt>multiplier </dt><dd> the original number is multiplied by this amount before formatting</dd>
* <dt>decPlaces </dt><dd> number of digits to the right of the decimal point</dd>
- * <dt>decPoint </dt><dd> character to be used as the decimal point</dd>
- * <dt>thouSep </dt><dd> character to use as the thousands separator</dd>
+ * <dt>thouSep </dt><dd> boolean indicating whether to insert thousands separator</dd>
* <dt>prefix </dt><dd> string added to the beginning of the result (e.g. a currency symbol)</dd>
* <dt>suffix </dt><dd> string added to the end of the result (e.g. % symbol)</dd>
* <dt>negSign </dt><dd> specifies format for negative numbers: L=leading minus, T=trailing minus, P=parens</dd>
if (isNaN(n)) return 'NaN';
if (typeof fmt.multiplier=='number') n*=fmt.multiplier;
var decPlaces=typeof fmt.decPlaces=='number' ? fmt.decPlaces : 0;
- var thouSep=typeof fmt.thouSep=='string' ? fmt.thouSep : this.thouSep;
- var decPoint=typeof fmt.decPoint=='string' ? fmt.decPoint : this.decPoint;
+ var thouSep=typeof fmt.thouSep=='undefined' ? true : this.thouSep;
var prefix=fmt.prefix || "";
var suffix=fmt.suffix || "";
var negSign=typeof fmt.negSign=='string' ? fmt.negSign : "L";
negSign=negSign.toUpperCase();
var s,cls;
if (n<0.0) {
- s=this.formatPosNumber(-n,decPlaces,thouSep,decPoint);
+ s=this.formatPosNumber(-n,decPlaces,thouSep);
if (negSign=="P") s="("+s+")";
s=prefix+s;
if (negSign=="L") s="-"+s;
cls='negNumber';
} else {
cls=n==0.0 ? 'zeroNumber' : 'posNumber';
- s=prefix+this.formatPosNumber(n,decPlaces,thouSep,decPoint);
+ s=prefix+this.formatPosNumber(n,decPlaces,thouSep);
}
return "<span class='"+cls+"'>"+s+suffix+"</span>";
},
datefmt=this.dateFmt;
break;
}
- return datefmt.replace(/(yyyy|yy|mmmm|mmm|mm|dddd|ddd|dd|hh|nn|ss|a\/p)/gi,
+ return datefmt.replace(/(yyyy|yy|mmmm|mmm|mm|dddd|ddd|dd|d|hh|nn|ss|a\/p)/gi,
function($1) {
var h;
switch ($1) {
}}};
if(typeof Rico=="undefined"){throw ("GridCommon requires the Rico JavaScript framework")
}Rico.GridCommon={baseInit:function(){this.options={saveColumnInfo:{width:true,filter:false,sort:false},cookiePrefix:"RicoGrid.",allowColResize:true,windowResize:true,click:null,dblclick:null,contextmenu:null,menuEvent:"dblclick",defaultWidth:-1,scrollBarWidth:19,minScrollWidth:100,frozenColumns:0,exportWindow:"height=400,width=500,scrollbars=1,menubar=1,resizable=1,location=0,toolbar=0,status=0",exportStyleList:["background-color","color","text-align","font-weight","font-size","font-family"],exportImgTags:false,exportFormFields:true,FilterLocation:null,FilterAllToken:"___ALL___",columnSpecs:[]};
-this.colWidths=[];
this.hdrCells=[];
this.headerColCnt=0;
this.headerRowIdx=0;
}d.push("f"+e+":"+b.join("~"))
}}Rico.setCookie(this.options.cookiePrefix+this.tableId,d.join(","),this.options.cookieDays,this.options.cookiePath,this.options.cookieDomain)
}};
-Rico.ColumnConst={UNFILTERED:0,SYSTEMFILTER:1,USERFILTER:2,UNSORTED:0,SORT_ASC:"ASC",SORT_DESC:"DESC",MINWIDTH:10,DOLLAR:{type:"number",prefix:"$",decPlaces:2,ClassName:"alignright"},EURO:{type:"number",prefix:"€",decPlaces:2,ClassName:"alignright"},PERCENT:{type:"number",suffix:"%",decPlaces:2,multiplier:100,ClassName:"alignright"},QTY:{type:"number",decPlaces:0,ClassName:"alignright"},DEFAULT:{type:"showTags"}};
+Rico.ColumnConst={UNFILTERED:0,SYSTEMFILTER:1,USERFILTER:2,UNSORTED:0,SORT_ASC:"ASC",SORT_DESC:"DESC",MINWIDTH:10};
Rico.TableColumnBase=function(){};
Rico.TableColumnBase.prototype={baseInit:function(h,g,e,d){Rico.log("TableColumnBase.init index="+g+" tabIdx="+d);
this.liveGrid=h;
this.mouseUpHandler=Rico.eventHandle(this,"handleMouseUp");
this.mouseOutHandler=Rico.eventHandle(this,"handleMouseOut");
this.fieldName="col"+this.index;
+this.format={type:"text"};
var b=h.options.columnSpecs[g];
-this.format=Rico.extend({},Rico.ColumnConst.DEFAULT);
-switch(typeof b){case"object":if(typeof b.format=="string"){Rico.extend(this.format,Rico.ColumnConst[b.format.toUpperCase()])
-}Rico.extend(this.format,b);
-break;
-case"string":if(b.slice(0,4)=="spec"){b=b.slice(4).toUpperCase()
-}if(typeof Rico.ColumnConst[b]=="object"){Rico.extend(this.format,Rico.ColumnConst[b])
-}break
+if(typeof b=="object"){Rico.extend(this.format,b)
}Rico.addClass(this.dataColDiv,this.colClassName());
this.visible=true;
if(typeof this.format.visible=="boolean"){this.visible=this.format.visible
if(b.length>0){return b[0].innerHTML
}else{return Rico.stripTags(a.innerHTML)
}},_clear:function(a){a.innerHTML=" "
-},clearCell:function(d){var c=this.cell(d);
-this._clear(c,d);
-if(!this.liveGrid.buffer){return
-}var b=this.liveGrid.buffer.options.acceptAttr;
-for(var a=0;
-a<b.length;
-a++){switch(b[a]){case"style":c.style.cssText="";
-break;
-case"class":c.className="";
-break;
-default:c["_"+b[a]]="";
-break
-}}},dataTable:function(){return this.liveGrid.tabs[this.tabIdx]
+},clearCell:function(b){var a=this.cell(b);
+this._clear(a,b);
+if(this.liveGrid.buffer&&this.liveGrid.buffer.options.acceptStyle){a.style.cssText=""
+}},dataTable:function(){return this.liveGrid.tabs[this.tabIdx]
},numRows:function(){return this.dataColDiv.childNodes.length
},clearColumn:function(){var b=this.numRows();
for(var a=0;
this.totalRows=0;
this.rowcntContent="";
this.rcvdOffset=-1;
-this.options={fixedHdrRows:0,canFilter:true,isEncoded:true,acceptAttr:[]};
+this.options={fixedHdrRows:0,canFilter:true,isEncoded:true,acceptStyle:false};
Rico.extend(this.options,a||{});
-if(b){this.loadRowsFromTable(b,this.options.fixedHdrRows)
+if(b){this.loadRowsFromTable(b,this.options.fixedHdrRows);
+b.parentNode.removeChild(b)
}else{this.clear()
}},registerGrid:function(a){this.liveGrid=a
},setTotalRows:function(a){if(typeof(a)!="number"){a=this.size
break;
default:this.liveGrid.updateHeightDiv();
break
-}},loadRowsFromTable:function(h,g){var e=new Array();
+}},loadRowsFromTable:function(h,g){var e=[];
var a=h.getElementsByTagName("tr");
for(var d=g||0;
d<a.length;
-d++){var f=new Array();
+d++){var f=[];
var c=a[d].getElementsByTagName("td");
for(var b=0;
b<c.length;
this.startPos=0;
this.size=this.baseRows.length
},dom2jstable:function(f){Rico.log("dom2jstable: encoded="+this.options.isEncoded);
-var e=new Array();
+var e=[];
var a=f.getElementsByTagName("tr");
for(var d=0;
d<a.length;
-d++){var g=new Array();
+d++){var g=[];
var c=a[d].getElementsByTagName("td");
for(var b=0;
b<c.length;
b++){g[b]=Rico.getContentAsString(c[b],this.options.isEncoded)
}e.push(g)
}return e
-},dom2jstableAttr:function(e,b){var h=this.options.acceptAttr;
-Rico.log("dom2jstableAttr start, # attr="+h.length);
-var f=new Array();
-var g=e.getElementsByTagName("tr");
-for(var d=b||0;
-d<g.length;
-d++){var m=new Array();
-var l=g[d].getElementsByTagName("td");
-for(var c=0;
-c<l.length;
-c++){m[c]={};
-for(var a=0;
-a<h.length;
-a++){m[c]["_"+h[a]]=l[c].getAttribute(h[a])
-}if(Rico.isIE){m[c]._class=l[c].getAttribute("className")
-}}f.push(m)
-}Rico.log("dom2jstableAttr end");
-return f
},_blankRow:function(){var a=[];
for(var b=0;
b<this.liveGrid.columns.length;
},bufferRow:function(a){return this.windowStart+a
},getWindowCell:function(c,b){var a=this.bufferRow(c);
return this.isVisible(a)&&b<this.rows[a].length?this.rows[a][b]:null
-},getWindowAttr:function(c,b){var a=this.bufferRow(c);
-return this.attr&&this.isVisible(a)&&b<this.attr[a].length?this.attr[a][b]:null
+},getWindowStyle:function(c,b){var a=this.bufferRow(c);
+return this.attr&&this.isVisible(a)&&b<this.attr[a].length?this.attr[a][b]:""
},getWindowValue:function(b,a){return this.getWindowCell(b,a)
},setWindowValue:function(d,b,c){var a=this.bufferRow(d);
if(a>=this.windowEnd){return false
return true
},getRows:function(f,d){var e=f-this.startPos;
var a=Math.min(e+d,this.size);
-var c=new Array();
+var c=[];
for(var b=e;
b<a;
b++){c.push(this.rows[b])
}}for(b=0;
b<3;
b++){this.tabs[b]=document.createElement("table");
-this.tabs[b].className="ricoLG_table";
+this.tabs[b].className=(b<2)?"ricoLG_table":"ricoLG_scrollTab";
this.tabs[b].border=0;
this.tabs[b].cellPadding=0;
this.tabs[b].cellSpacing=0;
}for(b=0;
b<2;
b++){this.thead[b]=this.tabs[b].createTHead();
-Rico.addClass(this.tabs[b],"ricoLG_top");
+this.thead[b].className="ricoLG_top";
if(Rico.theme.gridheader){Rico.addClass(this.thead[b],Rico.theme.gridheader)
}}for(b=0;
b<2;
var i=l.getElementsByTagName("div");
var g=Rico.getStyle(this.cell(0,h),"textAlign");
i[1].style.textAlign=g;
-switch(f.filterUI.charAt(0)){case"t":j=Rico.createFormField(i[1],"input","text",d,d);
+switch(f.filterUI.charAt(0)){case"t":j=Rico.createFormField(i[1],"input",Rico.inputtypes.search?"search":"text",d,d);
var n=f.filterUI.match(/\d+/);
j.maxLength=f.Length||50;
j.size=n?parseInt(n,10):10;
-i[1].appendChild(Rico.clearButton(Rico.eventHandle(e,"filterClear")));
-if(e.filterType==Rico.ColumnConst.USERFILTER&&e.filterOp=="LIKE"){var k=e.filterValues[0];
+if(j.type!="search"){i[1].appendChild(Rico.clearButton(Rico.eventHandle(e,"filterClear")))
+}if(e.filterType==Rico.ColumnConst.USERFILTER&&e.filterOp=="LIKE"){var k=e.filterValues[0];
if(k.charAt(0)=="*"){k=k.substr(1)
}if(k.slice(-1)=="*"){k=k.slice(0,-1)
}j.value=k;
e++){a=g[e].cells;
for(j=0,d=0;
a.length>0;
-j++){if(a[0].className=="ricoFrozen"){if(e==this.headerRowIdx){this.options.frozenColumns=j+1
+j++){if(Rico.hasClass(a[0],"ricoFrozen")){if(e==this.headerRowIdx){this.options.frozenColumns=j+1
}}else{d=1
}this.thead[d].rows[e].appendChild(a[0])
}}}Rico.log("loadHdrSrc end")
Rico.LiveGridColumn.prototype={initialize:function(liveGrid,colIdx,hdrInfo,tabIdx){Rico.extend(this,new Rico.TableColumnBase());
this.baseInit(liveGrid,colIdx,hdrInfo,tabIdx);
this.buffer=liveGrid.buffer;
-if(typeof(this.format.type)!="string"||this.format.EntryType=="tinyMCE"){this.format.type="raw"
+if(typeof(this.format.type)!="string"||this.format.EntryType=="tinyMCE"){this.format.type="html"
}if(typeof this.isNullable!="boolean"){this.isNullable=/number|date/.test(this.format.type)
-}this.isText=/raw|text|showTags/.test(this.format.type);
+}this.isText=/html|text/.test(this.format.type);
Rico.log(" sortable="+this.sortable+" filterable="+this.filterable+" hideable="+this.hideable+" isNullable="+this.isNullable+" isText="+this.isText);
this.fixHeaders(this.liveGrid.tableId,this.options.hdrIconsFirst);
if(this["format_"+this.format.type]){this._format=this["format_"+this.format.type]
},mFilterOtherClick:function(a){this.mFilterInputs[0].checked=false;
this.mFilterChange=true
},format_text:function(a){if(typeof a!="string"){return" "
-}else{return Rico.stripTags(a)
-}},format_showTags:function(a){if(typeof a!="string"){return" "
}else{return a.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")
}},format_number:function(a){if(typeof a=="undefined"||a==""||a==null){return" "
}else{return Rico.formatNumber(a,this.format)
}else{var b=Rico.setISO8601(a);
if(!b){return a
}return(this.format.prefix||"")+Rico.formatDate(b,this.format.dateFmt||"translateDateTime")+(this.format.suffix||"")
-}},format_UTCasLocalTime:function(a){if(typeof a=="undefined"||a==""||a==null){return" "
+}},format_utcaslocaltime:function(a){if(typeof a=="undefined"||a==""||a==null){return" "
}else{var c=new Date();
var b=Rico.setISO8601(a,-c.getTimezoneOffset());
if(!b){return a
}if(!this.format.filterUI){Rico.eventBind(this.imgFilter,"click",Rico.eventHandle(this,"filterClick"),false)
}},filterClick:function(a){if(this.filterType==Rico.ColumnConst.USERFILTER&&this.filterOp=="LIKE"){this.liveGrid.openKeyword(this.index)
}},getValue:function(a){return this.buffer.getWindowCell(a,this.index)
-},getBufferAttr:function(a){return this.buffer.getWindowAttr(a,this.index)
+},getBufferStyle:function(a){return this.buffer.getWindowStyle(a,this.index)
},setValue:function(b,a){this.buffer.setWindowValue(b,this.index,a)
},_format:function(a){return a
},_display:function(a,b){b.innerHTML=this._format(a)
},_export:function(a){return this._format(a)
},exportBuffer:function(a){return this._export(this.buffer.getValue(a,this.index))
-},displayValue:function(f){var a=this.getValue(f);
-if(a==null){this.clearCell(f);
+},displayValue:function(c){var a=this.getValue(c);
+if(a==null){this.clearCell(c);
return
-}var e=this.cell(f);
-this._display(a,e,f);
-var d=this.buffer.options.acceptAttr;
-if(d.length==0){return
-}var c=this.getBufferAttr(f);
-if(c==null){return
-}for(var b=0;
-b<d.length;
-b++){c=c["_"+d[b]]||"";
-switch(d[b]){case"style":e.style.cssText=c;
-break;
-case"class":e.className=c;
-break;
-default:e["_"+d[b]]=c;
-break
-}}}};
+}var b=this.cell(c);
+this._display(a,b,c);
+if(this.buffer.options.acceptStyle){b.style.cssText=this.getBufferStyle(c)
+}}};
Rico.TableColumn={};
Rico.TableColumn.checkboxKey=function(a){this.initialize(a)
};
this.sortmenu.addMenuItemId("gridmenuSortDesc",function(){d.sortDesc()
},true)
}this.filtermenu.clearMenu();
-if(d.canFilter()&&!d.format.filterUI&&(!b||d.filterType==Rico.ColumnConst.USERFILTER)){this.addSubMenuItem(Rico.getPhraseById("gridmenuFilterBy",d.displayName),this.filtermenu,false);
-d.userFilter=d.getValue(a);
+if(d.canFilter()){this.addSubMenuItem(Rico.getPhraseById("gridmenuFilterBy",d.displayName),this.filtermenu,false);
+if(!d.format.filterUI&&(!b||d.filterType==Rico.ColumnConst.USERFILTER)){d.userFilter=d.getValue(a);
if(d.filterType==Rico.ColumnConst.USERFILTER){this.filtermenu.addMenuItemId("gridmenuRemoveFilter",function(){d.setUnfiltered(false)
},true);
if(d.filterOp=="LIKE"){this.filtermenu.addMenuItemId("gridmenuChgKeyword",function(){o.openKeyword(i)
},true)
}this.filtermenu.addMenuItemId("gridmenuExclude",function(){d.setFilterNE()
},true)
-}}if(o.filterCount()>0){this.filtermenu.addMenuItemId("gridmenuRefresh",function(){o.filterHandler()
-},true);
-this.filtermenu.addMenuItemId("gridmenuRemoveAll",function(){o.clearFilters()
+}}}if(o.filterCount()>0){this.filtermenu.addMenuItemId("gridmenuRemoveAll",function(){o.clearFilters()
},true)
-}}else{if(o.filterCount()>0){this.addSubMenuItem(Rico.getPhraseById("gridmenuFilterBy",d.displayName),this.filtermenu,false);
-this.filtermenu.addMenuItemId("gridmenuRemoveAll",function(){o.clearFilters()
+}this.filtermenu.addMenuItemId("gridmenuRefresh",function(){o.filterHandler()
},true)
-}}this.exportmenu.clearMenu();
-if(f.printVisibleSQL&&typeof(f.dataSource)=="string"){this.addSubMenuItem(Rico.getPhraseById("gridmenuExport"),this.exportmenu,false);
-this.exportmenu.addMenuItemId("gridmenuExportVis2Web",function(){f.printVisibleSQL("html")
+}this.exportmenu.clearMenu();
+if(n>0){this.addSubMenuItem(Rico.getPhraseById("gridmenuExport"),this.exportmenu,false);
+if(f.printVisibleSQL&&typeof(f.dataSource)=="string"){this.exportmenu.addMenuItemId("gridmenuExportVis2Web",function(){f.printVisibleSQL("html")
});
this.exportmenu.addMenuItemId("gridmenuExportAll2Web",function(){f.printAllSQL("html")
},f.totalRows<=n);
});
this.exportmenu.addMenuItemId("gridmenuExportAll2SS",function(){f.printAllSQL("xl")
},f.totalRows<=n)
-}else{if(n>0&&m>0){this.addSubMenuItem(Rico.getPhraseById("gridmenuExport"),this.exportmenu,false);
+}else{this.addSubMenuItem(Rico.getPhraseById("gridmenuExport"),this.exportmenu,false);
this.exportmenu.addMenuItemId("gridmenuExportVis2Web",function(){f.printVisible()
});
this.exportmenu.addMenuItemId("gridmenuExportAll2Web",function(){f.printAll()
},clearTimer:function(){if(typeof this.timeoutHandler!="number"){return
}window.clearTimeout(this.timeoutHandler);
delete this.timeoutHandler
-},jsUpdate:function(a,c,f,b,d){this.clearTimer();
+},jsUpdate:function(a,c,e,b,d){this.clearTimer();
this.processingRequest=false;
Rico.log("jsUpdate: "+arguments.length);
if(d){Rico.log("jsUpdate: received error="+d);
this.rcvdRowCount=true;
this.foundRowCount=true;
Rico.log("jsUpdate: found RowCount="+this.rowcntContent)
-}this.updateBuffer(a,c,f);
+}this.updateBuffer(a,c,e);
if(this.options.onAjaxUpdate){this.options.onAjaxUpdate()
}this.updateGrid(a);
if(this.options.TimeOut&&this.timerMsg){this.restartSessionTimer()
-}if(this.pendingRequest>=-1){var e=this.pendingRequest;
-Rico.log("jsUpdate: found pending request for offset="+e);
+}if(this.pendingRequest>=-1){var f=this.pendingRequest;
+Rico.log("jsUpdate: found pending request for offset="+f);
this.pendingRequest=-2;
-this.fetch(e)
+this.fetch(f)
}},ajaxUpdate:function(a,c){this.clearTimer();
this.processingRequest=false;
if(c.status!=200){Rico.log("ajaxUpdate: received http error="+c.status);
}if(!o){alert("Data provider returned an invalid XML response");
Rico.log("Data provider returned an invalid XML response");
return false
-}var e=o.getElementsByTagName("ajax-response");
-if(e==null||e.length!=1){return false
-}this.rcvdRows=0;
+}var d=o.getElementsByTagName("ajax-response");
+if(d==null||d.length!=1){alert("Received invalid response from server");
+return false
+}Rico.log("Processing ajax-response");
+this.rcvdRows=0;
this.rcvdRowCount=false;
-var c=e[0];
-var a=c.getElementsByTagName("debug");
+var b=d[0];
+var a=b.getElementsByTagName("debug");
for(var g=0;
g<a.length;
g++){Rico.log("ajaxUpdate: debug msg "+g+": "+Rico.getContentAsString(a[g],this.options.isEncoded))
-}var l=c.getElementsByTagName("error");
-if(l.length>0){var d=Rico.getContentAsString(l[0],this.options.isEncoded);
-alert("Data provider returned an error:\n"+d);
-Rico.log("Data provider returned an error:\n"+d);
+}var l=b.getElementsByTagName("error");
+if(l.length>0){var c=Rico.getContentAsString(l[0],this.options.isEncoded);
+alert("Data provider returned an error:\n"+c);
+Rico.log("Data provider returned an error:\n"+c);
return false
-}var j=c.getElementsByTagName("rows")[0];
+}var j=b.getElementsByTagName("rows")[0];
if(!j){Rico.log("ajaxUpdate: invalid response");
this.liveGrid.showMsg(Rico.getPhraseById("invalidResponse"));
return false
-}var n=c.getElementsByTagName("rowcount");
+}var n=b.getElementsByTagName("rowcount");
if(n&&n.length==1){this.rowcntContent=Rico.getContentAsString(n[0],this.options.isEncoded);
this.rcvdRowCount=true;
this.foundRowCount=true;
this.rcvdOffset=j.getAttribute("offset");
Rico.log("ajaxUpdate: rcvdOffset="+this.rcvdOffset);
var h=this.dom2jstable(j);
-var b=(this.options.acceptAttr.length>0)?this.dom2jstableAttr(j):false;
+var e=(this.options.acceptStyle)?this.dom2jstableStyle(j):false;
this.rcvdRows=h.length;
-this.updateBuffer(k,h,b);
+this.updateBuffer(k,h,e);
return true
+},dom2jstableStyle:function(e,b){var a=this.options.acceptStyle;
+Rico.log("dom2jstableStyle start");
+var f=[];
+var g=e.getElementsByTagName("tr");
+for(var d=b||0;
+d<g.length;
+d++){var k=[];
+var h=g[d].getElementsByTagName("td");
+for(var c=0;
+c<h.length;
+c++){k[c]=h[c].getAttribute("style")||""
+}f.push(k)
+}Rico.log("dom2jstableStyle end");
+return f
},processResponseJSON:function(a,d){var c=Rico.getJSON(d);
if(!c||c==null){alert("Data provider returned an invalid JSON response");
Rico.log("Data provider returned an invalid JSON response");
this.foundRowCount=true;
Rico.writeDebugMsg("loadRows, found RowCount="+c.rowcount)
}this.rcvdRows=c.rows.length;
-this.updateBuffer(a,c.rows);
+this.updateBuffer(a,c.rows,c.styles);
return true
},updateBuffer:function(c,a,b){this.baseRows=a;
this.attr=b;
this.options={maxDisplayLen:20,panelHeight:200,panelWidth:500,compact:false,RecordName:Rico.getPhraseById("record"),updateURL:window.location.href,showSaveMsg:"errors"};
Rico.extend(this.options,b.options);
var a=this;
-this.hasWF2=(document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("WebForms","2.0"));
this.menu=b.menu;
this.menu.options.dataMenuHandler=function(d,f,g,e){return a.editMenu(d,f,g,e)
};
this.extraMenuItems=[];
this.responseHandler=function(){a.processResponse()
};
-Rico.log("Rico.TableEdit.initialize complete, hasWF2="+this.hasWF2)
+Rico.log("Rico.TableEdit.initialize complete")
},createKeyArray:function(){this.keys=[];
for(var a=0;
a<this.grid.columns.length;
}if(!b.Help){b.Help=b.dateFmt
}if(typeof b.min=="string"){b.min=Rico.setISO8601(b.min)||new Date(b.min)
}if(typeof b.max=="string"){b.max=Rico.setISO8601(b.max)||new Date(b.max)
-}if(this.hasWF2){e=Rico.createFormField(f,"input","date",a,a);
+}if(Rico.inputtypes.date){e=Rico.createFormField(f,"input","date",a,a);
e.required=b.required;
if(b.min){e.min=Rico.toISO8601String(b.min,3)
}if(b.max){e.max=Rico.toISO8601String(b.max,3)
break;
case"I":if(!b.isNullable){b.required=true
}if(!b.pattern){b.pattern="int-signed"
-}if(this.hasWF2){e=Rico.createFormField(f,"input","number",a,a);
+}if(Rico.inputtypes.number){e=Rico.createFormField(f,"input","number",a,a);
e.required=b.required;
e.min=b.min;
e.max=b.max;