您的位置:首页 > 编程语言 > ASP

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

2008-06-06 16:14 776 查看
        在ASP.NET应用程序中,使用了NetAdvantage的UltraWebGrid控件,使用时发现在Cell中按一下回车后不能自动转到下一单元格,必须连按三下回车后,才能转到下一单元格,本文介绍一下出现此现象的原因及处理方法。
[align=left]        经过仔细研究,发现产生这个问题的原因是使用了UltraWebGrid1_UpdateCell服务器端事件,因此当Cell中数据发生变化时,总会Postback到服务器端,等传回后重新刷了页面后,焦点仍然在原单元格上。[/align]
[align=left]     解决此问题有两个方法:[/align]
[align=left](1)         (1)在UltraWebGrid1_UpdateCell服务器端事件中增加重新定位到下一单元格的代码[/align]
[align=left]            //焦点定位到下一单元格[/align]
[align=left]            if (e.Cell.Column.Index < UltraWebGrid1.Columns.Count - 1)[/align]
[align=left]            {[/align]
[align=left]                UltraWebGrid1.Rows[e.Cell.Row.Index].Cells[e.Cell.Column.Index + 1].Activate();[/align]
[align=left]            }[/align]
(2)          (2)将能在客户端完成的计算在javascript中完成计算,不使用UltraWebGrid1_UpdateCell服务器端事件,如利用客户端的AfterCellUpdateHandler事件触发计算
[align=left]首先在javascript中定义以下函数:[/align]
[align=left]       function AfterCellUpdateHandler(tableName, itemName)[/align]
[align=left]       {[/align]
[align=left]                           var oCol = igtbl_getColumnById(itemName);[/align]
[align=left]                           if(oCol.Key=="Qty" || oCol.Key=="Price")[/align]
[align=left]                           {[/align]
[align=left]                                         //计算[/align]
[align=left]                           }[/align]
[align=left]        }[/align]
       在UltraWebGrid1的ClientSideEvents下的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应用程序的性能大有裨益。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐