ASP.NET中键盘上下左右键控制DataGrid的项选择和分页 附代码

yong427 2006-02-08 03:35:57
ASP.NET中键盘上下左右键控制DataGrid的项选择和分页
步骤如下:
1、在.aspx页面中拖入2个控件服务器控件ID:DataGrid1和客户端控件hidden类型的ID:tbxIndex
代码如下:
<div style="Z-INDEX:105;LEFT:8px;WIDTH:100%;POSITION:absolute;TOP:144px;align:center">
<asp:DataGrid id="DataGrid1" runat="server" AllowPaging="True" AutoGenerateColumns="False" Width="100%">
<Columns>
<asp:BoundColumn HeaderText="索引">
<HeaderStyle Wrap="False" HorizontalAlign="Center" Width="36px"></HeaderStyle>
<ItemStyle Wrap="False" HorizontalAlign="Center"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="cpid" HeaderText="项目ID">
<HeaderStyle Wrap="False" HorizontalAlign="Center" Width="72px"></HeaderStyle>
<ItemStyle Wrap="False" HorizontalAlign="Center"></ItemStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="cpname" HeaderText="项目名称">
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
</asp:BoundColumn>
</Columns>
<PagerStyle HorizontalAlign="Right" Wrap="False" Mode="NumericPages"></PagerStyle>
</asp:DataGrid>
</div>
<input type="hidden" runat="server" id="tbxIndex" style="Z-INDEX: 106; LEFT: 8px; POSITION: absolute; TOP: 104px; Design_Time_Lock: True"
Design_Time_Lock="True">
2、在.aspx中放入如下js代码
<script language="javascript">
function tr_move(et)
{
et.style.backgroundColor="red";
var dpdnNow = et.children.item(0);
window.document.getElementById("tbxIndex").value = dpdnNow.innerText;
}

function tr_mout(et)
{
et.style.backgroundColor="#ffffff";
}

function IsKeyDown()
{
var objTbRows = window.document.getElementById("DataGrid1").rows;
var objIndex = parseInt(window.document.getElementById("tbxIndex").value);

//键盘向下
if(window.event.keyCode == 40)
{
TableGetBackColor(1);
}
//键盘向上
if(window.event.keyCode == 38)
{
TableGetBackColor(-1);
}
//键盘向左分页
if(window.event.keyCode == 37)
{
if(objIndex == -1)
{
objIndex = 0;
}
var pageIndex = parseInt((objIndex) / (window.document.getElementById("DataGrid1").rows.length - 2));
if(objIndex >= parseInt(objTbRows(1).cells(0).innerText) && pageIndex <= parseInt(objTbRows(objTbRows.length - 2).cells(0).innerText))
{
pageIndex = pageIndex - 1;
}
var objTableN = "DataGrid1$_ctl14$_ctl"+pageIndex;
__doPostBack(objTableN,'');
}
//键盘向右分页
if(window.event.keyCode == 39)
{
if(objIndex == -1)
{
objIndex = 0;
}
var pageIndex = parseInt((objIndex + 1) / (window.document.getElementById("DataGrid1").rows.length - 2));
var objTableN = "DataGrid1$_ctl14$_ctl"+(pageIndex+1);
__doPostBack(objTableN,'');
}
}

function TableGetBackColor(objValue)
{
var nowValue = window.document.getElementById("tbxIndex").value;
var objTbRows = window.document.getElementById("DataGrid1").rows;

for(var iRow = 1; iRow < objTbRows.length - 1; iRow ++)
{
var objRow = objTbRows(iRow);
if(parseInt(nowValue) + objValue == parseInt(objRow.cells(0).innerText))
{
if(objValue == 1)
{
tr_move(objRow);
tr_mout(objTbRows(iRow - 1));
break;
}
else if(objValue == -1)
{
tr_move(objTbRows(iRow));
tr_mout(objTbRows(iRow+1));
break;
}
}
}
}
</script>

3、加上如下代码:
<body language="javascript" onkeydown="IsKeyDown()" ms_positioning="GridLayout">

4、编写对应的后台代码.cs文件中
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
DataGrid1.CurrentPageIndex = 0;
BindDataGrid();
this.tbxIndex.Value = "-1";
}
// 在此处放置用户代码以初始化页面
}

/// <summary>
/// 绑定DataGrid
/// </summary>
private void BindDataGrid()
{
string strCon = "workstation id=(local);packet size=4096;user id=sa;data source=(local);persist security info=True;initial catalog=CPRO;password=1234";
string strSql = "select top 100 * from cpro";
System.Data.SqlClient.SqlConnection conn = new SqlConnection(strCon);
System.Data.SqlClient.SqlDataAdapter ada = new SqlDataAdapter(strSql,strCon);
DataSet ds = new DataSet();
ada.Fill(ds);
DataGrid1.DataSource = ds;
DataGrid1.DataBind();
}

private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemIndex < 0)
return;
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem ||
e.Item.ItemType == ListItemType.SelectedItem)
{
e.Item.Cells[0].Text = Convert.ToString(DataGrid1.CurrentPageIndex * DataGrid1.PageSize +e.Item.ItemIndex);
e.Item.Attributes.Add("onmouseover","tr_move(this)");
e.Item.Attributes.Add("onmouseout","tr_mout(this)");
}
}

private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
DataGrid1.CurrentPageIndex = e.NewPageIndex;
BindDataGrid();
this.tbxIndex.Value = Convert.ToString(DataGrid1.CurrentPageIndex * DataGrid1.PageSize - 1);
}

ok运行下试试

具体看这里 http://blog.csdn.net/yong427/archive/2006/02/07/593393.aspx
...全文
236 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
carl_8888 2006-02-12
  • 打赏
  • 举报
回复
还是不完美呀!!!
vb_vs 2006-02-10
  • 打赏
  • 举报
回复
din
hedonister 2006-02-10
  • 打赏
  • 举报
回复
不错,支持
nimeide1234567890 2006-02-10
  • 打赏
  • 举报
回复
yong427 2006-02-10
  • 打赏
  • 举报
回复
up
silentwins 2006-02-08
  • 打赏
  • 举报
回复
好像有用,mark
ftlovexg 2006-02-08
  • 打赏
  • 举报
回复
有用。收下了。!~
yiyioo 2006-02-08
  • 打赏
  • 举报
回复
接分接代码~~~
楼主继续加油~~
再弄出点代码来~~~
HOHO~~~~~~~~~~~~~~~~``````````````````````````
辅助软件 aspx/asp代码生成器 语言规范 C# Language Specification 1.2(C#语言规范1.2).doc C# Language Specification 2.0(C#语言规范2.0).doc 源码教程 ASP.NET编程技术与交互式网页设计 asp.net亲密接触_带源码 C#学习 01_类.htm.txt 02_构造函数的执行序列.htm.txt 03_抽象类和接口.htm.txt 04_结构类型.htm.txt 05_类成员的定义.htm.txt 06_类成员的其他议题.htm.txt 07_接口的执行.htm.txt 08_集合.htm.txt 09_运算符重载.htm.txt 10_阴影和深度复制.htm.txt 11_事件基础.htm.txt 12_事件进阶.htm.txt 13_读写Txt文件.htm.txt 14_StatusBar控件.htm.txt 15_自定义控件.htm.txt 16_使用打开保存文件对话框.htm.txt 17_图形绘制基础.htm.txt 18_图形绘制进阶-线条、字体.htm.txt 19_图形绘制进阶-图像(双倍缓冲).htm.txt 20_Windows应用程序安装部署概念.htm.txt 21_使用文件基础.htm.txt 22_使用文件高级.htm.txt 23_串行化和并行化.htm.txt 技术资料 ACCESS数据库操作类.txt ASP.NET常用代码.txt asp.net常用函数表.txt Asp.net的身份验证.txt ASP导出Excel数据的四种方法.txt C#调用存储过程.txt CheckBox控件.txt datagrid排序_选择_分页.txt DataSet对象.txt DotNET WinForm FAQ 16个.txt excel打印.txt EXCEL导出.txt EXCEL合并单元格.txt mail.txt NET在RichTextBox控件加入图片(类似QQ).txt send.txt SQL储存过程等的解密.txt VisualC#打造“浏览器”.txt vs2005常用快捷.txt webcontrol和pagelet.txt win2003配置msdtc.txt word导出.txt 保证应用程序只有一个实例运行.txt 编辑字段的word文件.txt 编码标准.txt 播放声音.txt 捕捉DataGrid的双击事件(C#版本).txt 不显示窗口后台运行程序.txt 储存过程.txt 处理“进程性能计数器被禁用”的错误.txt 串口操作.txt 打开word文件.txt 打造“浏览器”.txt 带图标和自定义颜色的ListBox.txt 得到当前数据库所有用户表信息.txt 读取、设置系统时间日期.txt 读写注册表.txt 对过程进行加密.txt 二进制数据保存.txt 二进制数据字段的更新.txt 分页及动态创建列的控件 .txt 改变Windows服务的启动顺序.txt 各进制之间的转换.txt 给图片添加版权信息.txt 关于拖放操作.txt 关于在WinForm里用HttpWebRequest获得某个页面,并填写页面的textbox及点击button的方法.txt 画带阴影效果的文字.txt 环境信息.txt 获得光标在多行textbox的行与列的函数.txt 计算控件文字所占的宽度.txt 加半透明图片水印.txt 将控件放到datagrid以及修改列宽.txt 截取系统消息.txt 解决VS.NET使用属性框不显示的问题.txt 里的InputBox.txt 模拟鼠标和操作.txt 取CPU的序列号.txt 如何:在VisualC#.NET建立一个平滑的进度条.txt 如何得到网卡号.txt 如何调用WindowsAPI的要点.txt 如何控制输入法.txt 如何利用GDI作图解决异或问题.txt 如何取硬件标志.txt 如何让应用程序只有一个实例运行.txt 如何如何插入照片到Excel.txt 如何识别左右的shift,Ctrl或Alt.txt 如何水晶按钮的程序生成.txt 如何为DataGrid添加下拉列表框.txt 如何用C#在Excel生成图表?.txt 如何用程序实现和鼠标的模拟?.txt 如何与资源管理器互动剪切、拷贝、粘贴文件.txt 深入理解C#编程的组件-事件-委托.txt 生成透明的GIF图片 .txt 生成压缩图片时的2种方法.txt 使用C#返回系统特殊路径.txt 使用VisualC#.NET检查Windows版本.txt 使用Win32和其他库.txt 使用自己画的光标.txt 数据绑定.txt 水晶报表使用winform.txt 水印.txt 特殊文件夹路径.txt 同一解决方案一个目的xml注释在另一个不能智能提示显示这些注释的解决方法.txt 图像读取.txt 无标题窗口的拖放.txt 下面的5行代码完成了从局域网找出所有的机器.txt 显示DataGrid序号的一个适用的方法.txt 用C#快速往Excel写数据.txt 用C#来捕获屏幕.txt 用C#做ScreenSaver.txt 用imgscan.ocx来扫描图像.txt 用word填充表格.txt 用户登录组合控件.txt 在.NET得到计算机硬件信息的一些功能.txt 在MapX响应滚轮放大缩小地图.txt 在两个ASP.NET页面之间传递值.txt 在如何利用SharpZipLib进行文件的压缩和解压缩.txt 怎样打开关闭CDROM.txt 怎样检测网络的电脑是否有安装SQL2000.txt 怎样写一个存储过程类来实现如何对存储过程的调用?.txt 直接拉入图片文件到程序窗口打开.txt 指定Web服务器运行的不是ASP.NET1.1版.txt 字符串加密.txt 字幕显示屏幕保护.txt 自己动手用c#写控件.txt C#试题 简答题.txt 填空题.txt 问答题1.txt 问答题2.txt 选择题.txt 综合题.txt
语言规范 C# Language Specification 1.2(C#语言规范1.2).doc C# Language Specification 2.0(C#语言规范2.0).doc 源码教程 ASP.NET编程技术与交互式网页设计 asp.net亲密接触_带源码 C#学习 01_类.htm.txt 02_构造函数的执行序列.htm.txt 03_抽象类和接口.htm.txt 04_结构类型.htm.txt 05_类成员的定义.htm.txt 06_类成员的其他议题.htm.txt 07_接口的执行.htm.txt 08_集合.htm.txt 09_运算符重载.htm.txt 10_阴影和深度复制.htm.txt 11_事件基础.htm.txt 12_事件进阶.htm.txt 13_读写Txt文件.htm.txt 14_StatusBar控件.htm.txt 15_自定义控件.htm.txt 16_使用打开保存文件对话框.htm.txt 17_图形绘制基础.htm.txt 18_图形绘制进阶-线条、字体.htm.txt 19_图形绘制进阶-图像(双倍缓冲).htm.txt 20_Windows应用程序安装部署概念.htm.txt 21_使用文件基础.htm.txt 22_使用文件高级.htm.txt 23_串行化和并行化.htm.txt 技术资料 ACCESS数据库操作类.txt ASP.NET常用代码.txt asp.net常用函数表.txt Asp.net的身份验证.txt ASP导出Excel数据的四种方法.txt C#调用存储过程.txt CheckBox控件.txt datagrid排序_选择_分页.txt DataSet对象.txt DotNET WinForm FAQ 16个.txt excel打印.txt EXCEL导出.txt EXCEL合并单元格.txt mail.txt NET在RichTextBox控件加入图片(类似QQ).txt send.txt SQL储存过程等的解密.txt VisualC#打造“浏览器”.txt vs2005常用快捷.txt webcontrol和pagelet.txt win2003配置msdtc.txt word导出.txt 保证应用程序只有一个实例运行.txt 编辑字段的word文件.txt 编码标准.txt 播放声音.txt 捕捉DataGrid的双击事件(C#版本).txt 不显示窗口后台运行程序.txt 储存过程.txt 处理“进程性能计数器被禁用”的错误.txt 串口操作.txt 打开word文件.txt 打造“浏览器”.txt 带图标和自定义颜色的ListBox.txt 得到当前数据库所有用户表信息.txt 读取、设置系统时间日期.txt 读写注册表.txt 对过程进行加密.txt 二进制数据保存.txt 二进制数据字段的更新.txt 分页及动态创建列的控件 .txt 改变Windows服务的启动顺序.txt 各进制之间的转换.txt 给图片添加版权信息.txt 关于拖放操作.txt 关于在WinForm里用HttpWebRequest获得某个页面,并填写页面的textbox及点击button的方法.txt 画带阴影效果的文字.txt 环境信息.txt 获得光标在多行textbox的行与列的函数.txt 计算控件文字所占的宽度.txt 加半透明图片水印.txt 将控件放到datagrid以及修改列宽.txt 截取系统消息.txt 解决VS.NET使用属性框不显示的问题.txt 里的InputBox.txt 模拟鼠标和操作.txt 取CPU的序列号.txt 如何:在VisualC#.NET建立一个平滑的进度条.txt 如何得到网卡号.txt 如何调用WindowsAPI的要点.txt 如何控制输入法.txt 如何利用GDI作图解决异或问题.txt 如何取硬件标志.txt 如何让应用程序只有一个实例运行.txt 如何如何插入照片到Excel.txt 如何识别左右的shift,Ctrl或Alt.txt 如何水晶按钮的程序生成.txt 如何为DataGrid添加下拉列表框.txt 如何用C#在Excel生成图表?.txt 如何用程序实现和鼠标的模拟?.txt 如何与资源管理器互动剪切、拷贝、粘贴文件.txt 深入理解C#编程的组件-事件-委托.txt 生成透明的GIF图片 .txt 生成压缩图片时的2种方法.txt 使用C#返回系统特殊路径.txt 使用VisualC#.NET检查Windows版本.txt 使用Win32和其他库.txt 使用自己画的光标.txt 数据绑定.txt 水晶报表使用winform.txt 水印.txt 特殊文件夹路径.txt 同一解决方案一个目的xml注释在另一个不能智能提示显示这些注释的解决方法.txt 图像读取.txt 无标题窗口的拖放.txt 下面的5行代码完成了从局域网找出所有的机器.txt 显示DataGrid序号的一个适用的方法.txt 用C#快速往Excel写数据.txt 用C#来捕获屏幕.txt 用C#做ScreenSaver.txt 用imgscan.ocx来扫描图像.txt 用word填充表格.txt 用户登录组合控件.txt 在.NET得到计算机硬件信息的一些功能.txt 在MapX响应滚轮放大缩小地图.txt 在两个ASP.NET页面之间传递值.txt 在如何利用SharpZipLib进行文件的压缩和解压缩.txt 怎样打开关闭CDROM.txt 怎样检测网络的电脑是否有安装SQL2000.txt 怎样写一个存储过程类来实现如何对存储过程的调用?.txt 直接拉入图片文件到程序窗口打开.txt 指定Web服务器运行的不是ASP.NET1.1版.txt 字符串加密.txt 字幕显示屏幕保护.txt 自己动手用c#写控件.txt C#试题 简答题.txt 填空题.txt 问答题1.txt 问答题2.txt 选择题.txt 综合题.txt 辅助软件 aspx/asp代码生成器

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧