一下代碼可以實現彈出一個DataGrid窗口,該窗口支持up,down以及pageup,pagedown,home,end,Enter鍵盤操作,在按下Enter鍵後將選中的值返回初始窗口的TextBox1中。
webform1.aspx
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="ComplexTest.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<script language="javascript">
var oldrow
var currowno;
var strReturn; //存儲返回值
var newColor='#C0C0C0';
var oldColor;
var MaxRowCount;
function SelectOK(text)
{
eval("parent.opener.document.all.TextBox1.value = text");//向彈出該窗體的窗口返回值
parent.close();
}
function ChangePage(KeyCode)
{
if ( KeyCode == 33 ) { // 定義 PageUp 鍵快捷功能
document.all.PrevPage.click();//調用服務器控件的相應功能
}
if ( KeyCode == 34 ) { // 定義 PageDown 鍵快捷功能
document.all.NextPage.click();
}
if ( KeyCode == 36 ) { // 定義 Home 鍵快捷功能
document.all.FirstPage.click();
}
if ( KeyCode == 35 ) { // 定義 End 鍵快捷功能
document.all.LastPage.click();
}
if ( KeyCode == 38 ) { // ↑ 鍵快捷功能
MoveUp();
}
if ( KeyCode == 40 ) { // ↓ 鍵快捷功能
MoveDown();
}
if ( KeyCode == 37 ) { // ← 鍵快捷功能( 上一層 )
//QueryParent();
}
if ( KeyCode == 39 ) { // → 鍵快捷功能( 下一層 )
//QueryChild();
}
if ( KeyCode == 13 ) { // 回車鍵
SelectOK(strReturn);
}
}
function RowFocus(rowno,strValue,bFirst)
{
if (bFirst!=0){//如果不是第一次調用該函數
oldrow.style.backgroundColor=oldColor;//將舊的一行設置回原來的顏色
}
strReturn = strValue;//strReturn中保存要返回的值
oldrow=document.all('ROW' + rowno);//在oldrow中保存舊的行
oldColor=document.all('ROW' + rowno).style.backgroundColor;//在oldColor中保存當前行的顏色
document.all('ROW' + rowno).style.backgroundColor= newColor;//設置當前行的顏色為提醒色
currowno=rowno;//在currowno中保存當前行號
}
function MoveUp() {
if(currowno==0)//如果已經是最上一行則設置光標到最底一行
currowno=MaxRowCount-1;
else
currowno=currowno-1;//否則上移一行
document.all('ROW' + currowno).click();//調用該行的點擊函數
}
function MoveDown() {
if(currowno==MaxRowCount-1)//如果已經是最底一行則設置光標到最底一行上一行
currowno=0;
else
currowno=currowno+1;//否則下移一行
document.all('ROW' + currowno).click();
}
</script>
<script language="JavaScript" event="onkeydown" for="document">
if ( event.keyCode == 34 || event.keyCode == 33 || event.keyCode == 35 || event.keyCode == 36 || event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40 || event.keyCode == 13 )
{
ChangePage(event.keyCode);//改變頁面顯示
}
if ( event.keyCode == 27 ) parent.close();//按下ESC鍵退出
</script>
<STYLE>.hidetr { VISIBILITY: hidden }
</STYLE>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋體" style="FONT-SIZE: x-small; FONT-FAMILY: 宋體">
<asp:datagrid id=DataGrid1 style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" runat="server" Width="520px" DataSource="<%# dataSet21 %>" DataMember="Customers" AllowPaging="True" AutoGenerateColumns="False" BorderColor="#3366CC" BorderStyle="None" BorderWidth="1px" BackColor="White" CellPadding="4" Font-Size="X-Small" >
<FooterStyle Wrap="False" ForeColor="#003399" CssClass="hidetr" BackColor="#99CCCC"></FooterStyle>
<SelectedItemStyle Font-Bold="True" Wrap="False" ForeColor="#CCFF99" BackColor="#009999"></SelectedItemStyle>
<EditItemStyle Wrap="False"></EditItemStyle>
<AlternatingItemStyle Wrap="False"></AlternatingItemStyle>
<ItemStyle Wrap="False" ForeColor="#003399" BackColor="White"></ItemStyle>