selectData属性

assigned选择附加数据库信息
如果你想从客户端脚本里选择附加数据库你可以用selectData方法,这个方法允

许你传递一个SQL语句或者存储过程名给方法,然后返回一个包含所请求数据的对象,你

可能会要用到这个方法的地方是你不想加入某个表而想联合其中某个列

<script language=JScript>
...
document.all.dbnetgrid1.setColumnProperty("categoryid","transform:selectData")
document.all.dbnetgrid1.loadData()
...

var categoryNameCache = new Object()

function selectData(cell)
{
cell.style.textAlign = 'left'
if (typeof(categoryNameCache[cell.innerText]) == 'string')
{
cell.innerText = categoryNameCache[cell.innerText]
}
else
{
var grid = document.all.dbnetgrid1
var data = grid.selectData("SELECT categoryname FROM categories WHERE

categoryid = " + cell.innerText)
categoryNameCache[cell.innerText] = data.categoryname
cell.innerText = data.categoryname
}
}
...
</script>

返回的对象里是所有属性名称都是小写,不管数据表是大小写。上面这个例子也

使用了一种避免向服务器发送复杂关系请求的最小化缓存技术。
用存储过程来写这个方法也可以。

<script language=JScript>
...
function selectData()
{
var grid = window.event.srcElement
var parameters = new Object()
parameters["categoryname"] = "Beverages"
parameters["ordyear"] = 1996
var data = grid.selectData("salesbycategory", parameters)

document.all.productName.innerText = data.productname
}
...
</script>

用selectData选择多个行
默认情况下selectData返回描述所选行的单个对象,通过给函数传递可选的第三

个参数,你可以选择多个行。此时方法将返回所有选择对象为一个对象数组。

<script language=JScript>
...
document.all.onPageLoaded = getOrderValue
...
function getOrderValue()
{
var grid = document.all.dbnetgrid1
var table = grid.table
var orderIds = ''
for (var i=1;i<table.rows.length;i++)
{
if (i > 1)
orderIds += ','
orderIds += table.rows[i].id
}
sql = 'select orderid, sum(unitprice*quantity) as ordervalue from [order

details] where orderid in (' + orderIds + ') group by orderid'
var data = document.all.dbnetgrid1.selectData(sql,null,true)
for (var i in data)
{
var orderId = data[i].orderid
for (var r=1;r<table.rows.length;r++)
if (table.rows[r].id == orderId)
table.rows[r].cells[4].innerText = grid.formatNumber(data

[i].ordervalue,2)
}
}
...
</script>

上例中onPageLoaded 事件用来调用一个方法,这个方法选择'order details' 表每个排

序的总排序值,数据返回然后赋值给用orderid识别的正确行。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值