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应用程序的性能大有裨益。
[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应用程序的性能大有裨益。
相关文章推荐
- 在iis7下部署ASP.NET程序AjaxPro不能用问题解决办法
- 盘符双击不能打开;任务管理器,注册表,msconfig闪一下自动关闭--问题和解决办法
- asp.net mvc Ajax.BeginForm不能异步刷新,或转到新页面,或页面还是刷新了,的原因(或解决办法)
- 解决asp.net web控件不能拖动的问题
- EF Database First with ASP.NET MVC: Creating the Web Application and Data Models开发遇到问题的解决办法
- “Visual Studio .NET 已检测到指定的 Web 服务器运行的不是 ASP.NET 1.1 版...”问题的解决办法
- Asp.net MVC 3 Razor 视图引擎 中使用@输出的内容都会被自动进行HTML编码 问题的解决办法
- 一些ASP.NET不能调试问题的解决办法!
- AJAX技术与asp.net 2.0的完美结合之Timer的web应用 及使用AJAX控件时的“Sys 未定义”错误解决办法
- 一些ASP.NET不能调试问题的解决办法!
- asp.net mvc Ajax.BeginForm不能异步刷新,或转到新页面,或页面还是刷新了,的原因(或解决办法)(转)
- ASP.NET遇到问题,“对象不能从 DBNull 转换为其他类型”,记录一下~问题已经解决,谢谢大家~
- ASP/ASP.NET不能调试问题的解决办法
- 在iis8.5下部署ASP.NET程序AjaxPro不能用问题解决办法
- “Visual Studio .NET 已检测到指定的 Web 服务器运行的不是 ASP.NET 1.1 版...”问题的解决办法
- AJAX技术与asp.net 2.0的完美结合之Timer的web应用 及使用AJAX控件时的“Sys 未定义”错误解决办法
- ASP .NET readonly texbox 后台不能读取问题的解决办法
- CKEditor和CKFind 使用配置 常见配置问题的解决办法 CKEditor Demo(Asp.net)
- 类型:NodeJs;问题:默认IE的编码为utf8;结果:IE不能自动选择UTF-8编码解决办法
- Android Webview中解决H5的音视频不能自动播放的问题