ASP.NET中应用UltraWebGrid控件时在Cell中按一下回车后不能自动转到下一单元格的问题及解决办法

        ASP.NET 应用程序中 , 使用了 NetAdvantage UltraWebGrid 控件 , 使用时发现在 Cell 中按一下回车后不能自动转到下一单元格 , 必须连按三下回车后,才能转到下一单元格,本文介绍一下出现此现象的原因及处理方法。
        经过仔细研究,发现产生这个问题的原因是使用了 UltraWebGrid1_UpdateCell 服务器端事件,因此当 Cell 中数据发生变化时,总会 Postback 到服务器端,等传回后重新刷了页面后,焦点仍然在原单元格上。
     解决此问题有两个方法:
1          (1) UltraWebGrid1_UpdateCell 服务器端事件中增加重新定位到下一单元格的代码
            // 焦点定位到下一单元格
            if (e.Cell.Column.Index < UltraWebGrid1.Columns.Count - 1)
            {
                UltraWebGrid1.Rows[e.Cell.Row.Index].Cells[e.Cell.Column.Index + 1].Activate();
            }
2           (2) 将能在客户端完成的计算在 javascript 中完成计算,不使用 UltraWebGrid1_UpdateCell 服务器端事件,如利用客户端的 AfterCellUpdateHandler 事件触发计算
首先在 javascript 中定义以下函数:
       function AfterCellUpdateHandler(tableName, itemName)
       {
                           var oCol = igtbl_getColumnById(itemName);
                           if(oCol.Key=="Qty" || oCol.Key=="Price")
                           {
                                         // 计算
                           }
        }

       UltraWebGrid1ClientSideEvents下的AfterCellUpdateHandler属性中输   “AfterCellUpdateHandler”,则当Cell值发生变化时,将调用上面的函数,属性设置如下图:

        (3)如某些单元格必须使用UpdateCell服务器端事件,此时也可以在ClientSideEvents的AfterCellUpdateHandler事件处理中取消某些不必要的postback,代码如下:

function AfterCellUpdateHandler(tableName, itemName)
{
    var oCol = igtbl_getColumnById(itemName);
    //如果不是ITEM列,则取消PostBack
    if(oCol.Key!="item")
    {
        igtbl_cancelPostBack(tableName);
    }
}

总之,减少postback,对提高WEB应用程序的性能大有裨益。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值