当前位置: 代码迷 >> ASP.NET >> 怎么让GridView像Excel那样使用方向键来实现跨单元格的移动
  详细解决方案

怎么让GridView像Excel那样使用方向键来实现跨单元格的移动

热度:5927   发布时间:2013-02-25 00:00:00.0
如何让GridView像Excel那样使用方向键来实现跨单元格的移动?
在使用GridView控件时,我发现键盘上的方向键只能用来在TextBox内部移动(我的GridView中只有TextBox),不能像Excel那样,按下方向键就能实现上下左右四个方向的跨单元格移动。

  为了能使用方向键实现跨单元格移动,我找到了示例。但是按照示例写完代码后,我发现任然不能跨单元格移动,下面是我参考的示例的地址 http://www.codeproject.com/Articles/110180/GridView-column-and-row-navigation-using-up-down-r

  下面是我完整的前台代码和后台代码!请大家帮忙看看问题出在哪里!谢谢

-----------------------前台--------------------------

HTML code
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <title></title></head><body>    <form id="form1" runat="server">    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4"        ForeColor="#333333" GridLines="None">        <RowStyle BackColor="#E3EAEB" />        <Columns>            <asp:TemplateField HeaderText="Coulumn1" HeaderStyle-HorizontalAlign="Left">                <ItemTemplate>                    <asp:TextBox runat="server" ID="txtColumn1" Text='<%# Bind("Column1") %>'></asp:TextBox>                </ItemTemplate>                <HeaderStyle HorizontalAlign="Left"></HeaderStyle>            </asp:TemplateField>            <asp:TemplateField HeaderText="Coulumn1" HeaderStyle-HorizontalAlign="Left">                <ItemTemplate>                    <asp:TextBox runat="server" ID="txtColumn2" Text='<%# Bind("Column2") %>'></asp:TextBox>                </ItemTemplate>                <HeaderStyle HorizontalAlign="Left"></HeaderStyle>            </asp:TemplateField>            <asp:TemplateField HeaderText="Coulumn1" HeaderStyle-HorizontalAlign="Left">                <ItemTemplate>                    <asp:TextBox runat="server" ID="txtColumn3" Text='<%# Bind("Column3") %>'></asp:TextBox>                </ItemTemplate>                <HeaderStyle HorizontalAlign="Left"></HeaderStyle>            </asp:TemplateField>        </Columns>        <FooterStyle BackColor="#1C5E55" ForeColor="White" Font-Bold="True" />        <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />        <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />        <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />        <EditRowStyle BackColor="#7C6F57" />        <AlternatingRowStyle BackColor="White" />    </asp:GridView>    <script src="http://code.jquery.com/jquery-1.7.2.min.js" type="text/javascript"></script>    <script type="text/javascript">        $(document).ready(function () {            //For navigating using left and right arrow of the keyboard            $("input[type='text'], select").keydown(function (event) {    if ((event.keyCode == 39) || (event.keyCode == 9 && event.shiftKey == false)) {        var inputs = $(this).parents("form").eq(0).find("input[type='text'], select");        var idx = inputs.index(this);        if (idx == inputs.length - 1) {            inputs[0].select()        } else {            $(this).parents("table").eq(0).find("tr").not(':first').each(function () {                $(this).attr("style", "BACKGROUND-COLOR: white; COLOR: #003399");            });            inputs[idx + 1].parentNode.parentNode.style.backgroundColor = "Aqua";            inputs[idx + 1].focus();        }        return false;    }    if ((event.keyCode == 37) || (event.keyCode == 9 && event.shiftKey == true)) {        var inputs = $(this).parents("form").eq(0).find("input[type='text'], select");        var idx = inputs.index(this);        if (idx > 0) {            $(this).parents("table").eq(0).find("tr").not(':first').each(function () {                $(this).attr("style", "BACKGROUND-COLOR: white; COLOR: #003399");            });            inputs[idx - 1].parentNode.parentNode.style.backgroundColor = "Aqua";            inputs[idx - 1].focus();        }        return false;    }});            //For navigating using up and down arrow of the keyboard            $("input[type='text'], select").keydown(function (event) {    if ((event.keyCode == 40)) {        if ($(this).parents("tr").next() != null) {            var nextTr = $(this).parents("tr").next();            var inputs = $(this).parents("tr").eq(0).find("input[type='text'], select");            var idx = inputs.index(this);            nextTrinputs = nextTr.find("input[type='text'], select");            if (nextTrinputs[idx] != null) {                $(this).parents("table").eq(0).find("tr").not(':first').each(function () {                    $(this).attr("style", "BACKGROUND-COLOR: white; COLOR: #003399");                });                nextTrinputs[idx].parentNode.parentNode.style.backgroundColor = "Aqua";                nextTrinputs[idx].focus();            }        }        else {            $(this).focus();        }    }    if ((event.keyCode == 38)) {        if ($(this).parents("tr").next() != null) {            var nextTr = $(this).parents("tr").prev();            var inputs = $(this).parents("tr").eq(0).find("input[type='text'], select");            var idx = inputs.index(this);            nextTrinputs = nextTr.find("input[type='text'], select");            if (nextTrinputs[idx] != null) {                $(this).parents("table").eq(0).find("tr").not(':first').each(function () {                    $(this).attr("style", "BACKGROUND-COLOR: white; COLOR: #003399");                });                nextTrinputs[idx].parentNode.parentNode.style.backgroundColor = "Aqua";                nextTrinputs[idx].focus();            }            return false;        }        else {            $(this).focus();        }    }});        });    </script>    </form></body></html>-----------------------后台------------------------[code=C#]using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;public partial class Default7 : System.Web.UI.Page{    protected void Page_Load(object sender, EventArgs e)    {        BindGrid(10);    }    private void BindGrid(int rowcount)    {        DataTable dt = new DataTable();        DataRow dr;        dt.Columns.Add(new System.Data.DataColumn("Column1", typeof(String)));        dt.Columns.Add(new System.Data.DataColumn("Column2", typeof(String)));        dt.Columns.Add(new System.Data.DataColumn("Column3", typeof(String)));        for (int i = 1; i < rowcount + 1; i++)        {            dr = dt.NewRow();            dr[0] = "Row" + i.ToString() + " Col1";            dr[1] = "Row" + i.ToString() + " Col2";            dr[2] = "Row" + i.ToString() + " Col3";            dt.Rows.Add(dr);        }        GridView1.DataSource = dt;        GridView1.DataBind();    }}
  相关解决方案