1.aspx代码,因为textbox的外面又一层table所以用到了很多children[],希望有更好的办法,真实例子粘过去就能运行
<script src="jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
//window.onbeforeunload = function () { return "qwewqeqweqwe" };
function keyPressed() {
var element = null;
element = event.srcElement;
if (!element || element == null) element = event.target;
if (element.type != "text") return;
var tblGrid = document.getElementById("gdv");
var TBID = element; //当前ID
var CurCellID = TBID.parentElement.parentElement.parentElement.parentElement.parentElement;
var CurCellIndex = CurCellID.cellIndex; //当前是第几列
var CurRowIndex = CurCellID.parentElement.rowIndex; //当前是第行;
var rowcount = tblGrid.rows.length; //总行
var CellCount = tblGrid.rows[CurRowIndex].cells.length; //当前行的总列数
var TargateRow = -1; //目标行(默认值为-1)
var TargateCell = -1; //目标列 (默认值为-1)
var R, C;
if (event.keyCode == 40 || event.keyCode == 13 || event.keyCode == 38) {
if (tblGrid.rows[CurRowIndex].cells[CurCellIndex].children[0].children[0].children[0].children[0].children[0] != null) {
if (tblGrid.rows[CurRowIndex].cells[CurCellIndex].children[0].children[0].children[0].children[0].children[0].id == TBID.id) {
//向下光标****************************************************************************
if (event.keyCode == 40 || event.keyCode == 13)//Buttom
{
if (CurRowIndex < rowcount - 1) {
if (tblGrid.rows[CurRowIndex + 1].cells[CurCellIndex].children[0] != null) {
if (tblGrid.rows[CurRowIndex + 1].cells[CurCellIndex].children[0].children[0].children[0].children[0].children[0].type == 'text') {
//downvalue
tblGrid.rows[CurRowIndex + 1].cells[CurCellIndex].children[0].children[0].children[0].children[0].children[0].select();
return false;
}
}
}
else {
//当在最后一行按向下光标键时,新增一行空白行
}
}
//向上光标(当前行必须大于第一行)******************************************************
if (event.keyCode == 38 && CurRowIndex > 1)//up
{
if (tblGrid.rows[CurRowIndex - 1].cells[CurCellIndex].children[0].children[0].children[0].children[0].children[0] != null) {
if (tblGrid.rows[CurRowIndex - 1].cells[CurCellIndex].children[0].children[0].children[0].children[0].children[0].type == 'text') {
//upvalue
tblGrid.rows[CurRowIndex - 1].cells[CurCellIndex].children[0].children[0].children[0].children[0].children[0].select();
return false;
}
}
}
//END****************************************************************************
}
}
}
}
</script>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div>
<asp:GridView ID="gdv" runat="server" onkeydown='return keyPressed()' AllowPaging="True"
PageSize="50" AutoGenerateColumns="False" Width="100%" PagerStyle-HorizontalAlign="Center">
<PagerSettings Visible="False" />
<PagerStyle HorizontalAlign="Center" />
<RowStyle HorizontalAlign="Center" />
<Columns>
<asp:TemplateField HeaderText="序号">
<ItemTemplate>
<asp:Label ID="lbl" runat="server" Text="<%# Container.DataItemIndex+1%>"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Name" HeaderText="测试" />
<asp:TemplateField HeaderText="名称">
<ItemTemplate>
<table>
<tr>
<td>
<asp:TextBox ID="BarCode" runat="server" Text='<%#Eval("HousesID") %>' Width="200px"
MaxLength="10"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label1" runat="server" Text='<%#Eval("HousesID") %>'></asp:Label>
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="编辑">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" OnClientClick="showDivObj(this,'gdv', 5)">编辑</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</form>
2.cs代码
List<SeeList> list = new List<SeeList>();
protected void Page_Load(object sender, EventArgs e)
{
SeeList li = new SeeList();
li.AutoID = 1;
li.HousesID = 21;
li.Name = "asd1";
list.Add(li);
SeeList li2 = new SeeList();
li2.AutoID = 1;
li2.HousesID = 22;
li2.Name = "asd2";
list.Add(li2);
SeeList li3 = new SeeList();
li3.AutoID = 1;
li3.HousesID = 23;
li3.Name = "asd3";
list.Add(li3);
SeeList li4 = new SeeList();
li4.AutoID = 1;
li4.HousesID = 24;
li4.Name = "asd4";
list.Add(li4);
SeeList li5 = new SeeList();
li5.AutoID = 1;
li5.HousesID = 25;
li5.Name = "asd5";
list.Add(li5);
gdv.DataSource = list;
gdv.DataBind();
}
#region 实体
public class SeeList
{
private int m_AutoID;
public int AutoID
{
get { return m_AutoID; }
set { m_AutoID = value; }
}
private int m_HousesID;
public int HousesID
{
get { return m_HousesID; }
set { m_HousesID = value; }
}
private string m_Name;
public string Name
{
get { return m_Name; }
set { m_Name = value; }
}
}
#endregion