我举个现实中的例子先:
一个订单明细录入的页面,Grid上有:料品ID,料品名,单位,需求数量,单价,小计,备注等字段,在录入一条明细时,每一列都是允许客户进行修改的,但对于某些字段是需要Postback的,比如料品ID输入后马上PostBack,可以判断料品是否存在,存在的话,可以取到料品名与单位,或者还有当前库存等信息,而有些字段如备注,也可以修改,但是不需要提交。
这在UtralWebGrid是很容易实现的:
只要给Grid绑定CellUpdate的服务器端事件,在事件中得到料品ID后获取信息到Grid行中。
但这样的话,每个可以Update的列都会触发此事件,导致备注也被PostBack,这是我们不希望的。
因此,我们给UltraWebGrid添加客户端的AfterCellUpdateHander的客户端事件,
在此客户端脚本中判断此Cell的列名,如果是备注列,则可以使用
igtbl_cancelPostBack(gridName); //gridName为此Grid的名称
方法就可以放弃服务器端的事件触发了。类似如下代码:
function
UltraWebGrid1_AfterCellUpdateHandler(gridName, cellId){
// Add code to handle your event here.
var cell = igtbl_getCellById(cellId);
if (cell.Column.Key != " CompanyName " )
igtbl_cancelPostBack(gridName);
// Add code to handle your event here.
var cell = igtbl_getCellById(cellId);
if (cell.Column.Key != " CompanyName " )
igtbl_cancelPostBack(gridName);
使用igtbl_cancelPostBack(gridName);方法给我带来了很大的方便,让我更能自如的控制客户端与服务端的交互。
此功能在NetAdvantage 2004 vol 3 与2005 vol 1中都支持!!