none
在GridView中如何象Excel一样使用键盘的方向键 RRS feed

  • 问题

  • GridView在使用中,方向键只能用来在单元格之间的移动,我希望它能够像Excel中那样自由移动,就仿照网上的例子做。下面是我的代码!
    但是无法执行,连变量_i都不知道是在什么地方定义的。很迷惘,请各位帮忙看看!谢谢

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

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>无标题页</title>
        <style type="text/css">
    
            .style1
            {
                width: 73%;
            }
        </style>
        
        <script type="text/javascript">
            var currentRowId = 0;
            function SelectRow() {
                if (event.keyCode == 40)
                    MarkRow(currentRowId + 1);
                else if (event.keyCode == 38)
                    MarkRow(currentRowId - 1);
            }
            function MarkRow(rowId) {
                if (document.getElementById(rowId) == null)
                    return;
                if (document.getElementById(currentRowId) != null)
                    document.getElementById(currentRowId).style.backgroundColor = '#ffffff';
                currentRowId = rowId;
                document.getElementById(rowId).style.backgroundColor = '#ff0000';
            }   
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        
        <table align="center" class="style1">
            <tr>
                <td align="left">
        <asp:GridView ID="GridView1" Runat="server" DataKeyNames="ID"
    
                AutoGenerateColumns="False" AllowPaging="True" PageSize="5" Width="854px" 
                        CellPadding="4" ForeColor="#333333" GridLines="None" 
                        DataSourceID="SqlDataSource1" onrowdatabound="GridView1_RowDataBound">
    
                <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
                <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
    
                <Columns>
    
                    <asp:BoundField DataField="ID" HeaderText="编号" />
    
                    <asp:TemplateField SortExpression="au_lname" HeaderText="员工姓名" >
    
                        <ItemTemplate>
    
                            <asp:TextBox Runat="server" Text='<%# Bind("au_lname") %>' ID="txtName"></asp:TextBox>
    
                        </ItemTemplate>
    
                    </asp:TemplateField>
    
                    <asp:TemplateField HeaderText="员工性别">
    
                        <ItemTemplate>
    
                            <asp:TextBox Runat="server" Text='<%# Bind("sex") %>' ID="txtSex"></asp:TextBox>
    
                        </ItemTemplate>
    
                    </asp:TemplateField>
    
                    <asp:TemplateField HeaderText="员工学历">
                        <ItemTemplate>
                            <asp:TextBox ID="txtState" runat="server" Text='<%# Bind("state") %>'></asp:TextBox>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="电话号码">
                        <ItemTemplate>
                            <asp:TextBox ID="txtPhone" runat="server" Text='<%# Bind("phone") %>'></asp:TextBox>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="家庭地址">
                        <ItemTemplate>
                            <asp:TextBox ID="txtAddress" runat="server" Text='<%# Bind("address") %>'></asp:TextBox>
                        </ItemTemplate>
                    </asp:TemplateField>
    
                </Columns>
    
                <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
                <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
                <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
                <AlternatingRowStyle BackColor="White" />
    
            </asp:GridView>
    
           
    
                </td>
            </tr>
            <tr>
                <td>
    
           
    
            <asp:Button ID="Button1" Runat="server" Text="一次性修改所有行" OnClick="Button1_Click" 
                        Width="128px" />
                    <br />
                    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                        ConnectionString="<%$ ConnectionStrings:db_DataControlConnectionString %>" 
                        SelectCommand="SELECT ID, au_lname, sex, state, phone, address FROM tb_mrEmp" 
                        UpdateCommand="update tb_mrEmp set au_lname=@name,sex=@sex,state=@state,phone=@phone,address=@address where ID=@ID">
                        <UpdateParameters>
                            <asp:Parameter Name="name" Type="String" />
                            <asp:Parameter Name="sex" Type="String" />
                            <asp:Parameter Name="state" Type="String" />
                            <asp:Parameter Name="phone" Type="String" />
                            <asp:Parameter Name="address" Type="String" />
                            <asp:Parameter Name="ID" />
                            
                        </UpdateParameters>
                    </asp:SqlDataSource>
                </td>
            </tr>
        </table>
    
           
    
        </div>
        </form>
    </body>
    </html>
    

    ---------------------------后台--------------------------------

    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 Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
    
                GridViewRow row = GridView1.Rows[i];
    
                SqlDataSource1.UpdateParameters[0].DefaultValue = ((TextBox)row.Cells[0].FindControl("txtName")).Text;
    
                SqlDataSource1.UpdateParameters[1].DefaultValue = ((TextBox)row.Cells[1].FindControl("txtSex")).Text;
    
                SqlDataSource1.UpdateParameters[2].DefaultValue = ((TextBox)row.Cells[1].FindControl("txtState")).Text;
    
                SqlDataSource1.UpdateParameters[3].DefaultValue = ((TextBox)row.Cells[1].FindControl("txtPhone")).Text;
    
                SqlDataSource1.UpdateParameters[4].DefaultValue = ((TextBox)row.Cells[1].FindControl("txtAddress")).Text;
    
                SqlDataSource1.UpdateParameters[5].DefaultValue = GridView1.DataKeys[i].Value.ToString();
    
    
               
                SqlDataSource1.Update();
                
            }
    
            //_i 是什么?  原文没有提示。。。
        }
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Attributes.Add("id", _i.ToString());
                e.Row.Attributes.Add("onKeyDown", "SelectRow();");
                e.Row.Attributes.Add("onClick", "MarkRow(" + _i.ToString() + ");");
                _i++;
            }
        }
    }
    


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年4月23日 3:35

答案

  • 关于owc可以查看百度百科http://baike.baidu.com/view/566954.htm

    不过也是较早的控件了。。下面是我用owc实现的界面截图

    关于光标的定位简单的方法是移动的时候都全选..也就是加上一个select()方法!

        <script type="text/javascript">
            function enter(obj) {
                var tr = obj.parentNode.parentNode;
                if (event.keyCode == 40) //向下的时候
                {
                    if (tr.rowIndex < tr.parentNode.rows.length - 1)
                        tr.parentNode.rows[tr.rowIndex + 1].cells[obj.parentNode.cellIndex].children[0].focus();
                    tr.parentNode.rows[tr.rowIndex + 1].cells[obj.parentNode.cellIndex].children[0].select();
                    return;
                }
                if (event.keyCode == 37) //向左的时候
                {
                    if (obj.parentNode.cellIndex > 0)
                        tr.parentNode.rows[tr.rowIndex].cells[obj.parentNode.cellIndex - 1].children[0].focus();
                    tr.parentNode.rows[tr.rowIndex].cells[obj.parentNode.cellIndex - 1].children[0].select();
                    return;
    
                }
                if (event.keyCode == 39) //向右的时候
                {
                    if (obj.parentNode.cellIndex < tr.cells.length - 1)
                        tr.parentNode.rows[tr.rowIndex].cells[obj.parentNode.cellIndex + 1].children[0].focus();
                    tr.parentNode.rows[tr.rowIndex].cells[obj.parentNode.cellIndex + 1].children[0].select();
                    return;
    
                }
                if (event.keyCode == 38) //向上的时候
                {
                    if (tr.rowIndex > 1)
                        tr.parentNode.rows[tr.rowIndex - 1].cells[obj.parentNode.cellIndex].children[0].focus();
                    tr.parentNode.rows[tr.rowIndex - 1].cells[obj.parentNode.cellIndex].children[0].select();
                    return;
    
                }
            }</script>

    2012年4月28日 7:19
    版主

全部回复

  •     我制作了一个GridView,把控件都转换为模板,基本功能可以运行,但我发现有一个操作非常不便的地方:控制上下左右的键不好用。如果是Excel表,可以按小键盘上的上下左右来选择想要的单元格,而GridView只能在单元格中左右动,不能完成从一个单元格到另一个单元格的动作(只能靠鼠标点上下的格子)。想请教各位有什么解决方法么?

    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    • 已合并 chenrensongModerator 2012年5月8日 11:35 两个问题同一个人问的,内容是一样的!
    2012年4月17日 4:51
  • 或許你可以使用jQuery來做。

    http://www.knowlbase.in/2012/01/traverse-cursor-through-text-box-with.html

    http://stackoverflow.com/questions/9818325/how-to-move-up-and-down-in-asp-net-gridview-using-arrow-keys


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/


    2012年4月17日 6:50
  • 谢谢您的及时回复!但我还没有接触过  您提供的那么难的代码,而且我也没有尝试写过一个完整的脚本代码。

        能否请您画个葫芦,我再照着画个瓢,谢谢!

    下面是我的示例代码,请问该如何在此代码基础上  完善 方向键的功能呢?

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

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>无标题页</title>
        <style type="text/css">
    
            .style1
            {
                width: 73%;
            }
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        
        <table align="center" class="style1">
            <tr>
                <td align="left">
        <asp:GridView ID="GridView1" Runat="server" DataKeyNames="ID"
    
                AutoGenerateColumns="False" AllowPaging="True" PageSize="5" Width="854px" 
                        CellPadding="4" ForeColor="#333333" GridLines="None" 
                        DataSourceID="SqlDataSource1">
    
                <FooterStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
                <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
    
                <Columns>
    
                    <asp:BoundField DataField="ID" HeaderText="编号" />
    
                    <asp:TemplateField SortExpression="au_lname" HeaderText="员工姓名">
    
                        <ItemTemplate>
    
                            <asp:TextBox Runat="server" Text='<%# Bind("au_lname") %>' ID="txtName"></asp:TextBox>
    
                        </ItemTemplate>
    
                    </asp:TemplateField>
    
                    <asp:TemplateField HeaderText="员工性别">
    
                        <ItemTemplate>
    
                            <asp:TextBox Runat="server" Text='<%# Bind("sex") %>' ID="txtSex"></asp:TextBox>
    
                        </ItemTemplate>
    
                    </asp:TemplateField>
    
                    <asp:TemplateField HeaderText="员工学历">
                        <ItemTemplate>
                            <asp:TextBox ID="txtState" runat="server" Text='<%# Bind("state") %>'></asp:TextBox>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="电话号码">
                        <ItemTemplate>
                            <asp:TextBox ID="txtPhone" runat="server" Text='<%# Bind("phone") %>'></asp:TextBox>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="家庭地址">
                        <ItemTemplate>
                            <asp:TextBox ID="txtAddress" runat="server" Text='<%# Bind("address") %>'></asp:TextBox>
                        </ItemTemplate>
                    </asp:TemplateField>
    
                </Columns>
    
                <PagerStyle BackColor="#FFCC66" ForeColor="#333333" HorizontalAlign="Center" />
                <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
                <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="White" />
                <AlternatingRowStyle BackColor="White" />
    
            </asp:GridView>
    
           
    
                </td>
            </tr>
            <tr>
                <td>
    
           
    
            <asp:Button ID="Button1" Runat="server" Text="一次性修改所有行" OnClick="Button1_Click" 
                        Width="128px" />
                    <br />
                    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                        ConnectionString="<%$ ConnectionStrings:db_DataControlConnectionString %>" 
                        SelectCommand="SELECT ID, au_lname, sex, state, phone, address FROM tb_mrEmp" 
                        UpdateCommand="update tb_mrEmp set au_lname=@name,sex=@sex,state=@state,phone=@phone,address=@address where ID=@ID">
                        <UpdateParameters>
                            <asp:Parameter Name="name" Type="String" />
                            <asp:Parameter Name="sex" Type="String" />
                            <asp:Parameter Name="state" Type="String" />
                            <asp:Parameter Name="phone" Type="String" />
                            <asp:Parameter Name="address" Type="String" />
                            <asp:Parameter Name="ID" />
                        </UpdateParameters>
                    </asp:SqlDataSource>
                </td>
            </tr>
        </table>
    
           
    
        </div>
        </form>
    </body>
    </html>
    

    --------------------------------后台-------------------------------

    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 Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
    
                GridViewRow row = GridView1.Rows[i];
    
                SqlDataSource1.UpdateParameters[0].DefaultValue = ((TextBox)row.Cells[0].FindControl("txtName")).Text;
    
                SqlDataSource1.UpdateParameters[1].DefaultValue = ((TextBox)row.Cells[1].FindControl("txtSex")).Text;
    
                SqlDataSource1.UpdateParameters[2].DefaultValue = ((TextBox)row.Cells[1].FindControl("txtState")).Text;
    
                SqlDataSource1.UpdateParameters[3].DefaultValue = ((TextBox)row.Cells[1].FindControl("txtPhone")).Text;
    
                SqlDataSource1.UpdateParameters[4].DefaultValue = ((TextBox)row.Cells[1].FindControl("txtAddress")).Text;
    
                SqlDataSource1.UpdateParameters[5].DefaultValue = GridView1.DataKeys[i].Value.ToString();
    
                SqlDataSource1.Update();
                
            }
    
    
        }
    }
    


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年4月17日 9:50
  •         谢谢您提供的方法!我尝试了那两个链接,但是没有成功,我也不知道 错在哪里!  我继续再网上查找相关的示例,觉得这个也许能行,http://www.cnblogs.com/margiex/archive/2007/04/24/725915.html

    <script type="text/javascript"> 
            var currentRowId = 0;    
            function SelectRow()
            {
                if (event.keyCode == 40)
                    MarkRow(currentRowId+1);
                else if (event.keyCode == 38)
                    MarkRow(currentRowId-1);
            }       
            function MarkRow(rowId)
            {
                if (document.getElementById(rowId) == null)
                    return;           
                if (document.getElementById(currentRowId) != null )
                    document.getElementById(currentRowId).style.backgroundColor = '#ffffff';
                currentRowId = rowId;
                document.getElementById(rowId).style.backgroundColor = '#ff0000';
            }   
        </script>

    --------------------------后台----------------------

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Attributes.Add("id", _i.ToString());
                e.Row.Attributes.Add("onKeyDown", "SelectRow();");
                e.Row.Attributes.Add("onClick", "MarkRow(" + _i.ToString() + ");");
                _i++;
            }
        }   

            按照他的提示我把<script type="text/javascript">    <script>  放在<head></head>中,然后把GridView1_RowDataBound     也加入提示的代码,发现不能运行!

        问题1:_i   是什么?  应该写在哪里?

        问题2:就把这两段代码粘贴到相应的位置,把_i 搞定了  就能让鼠标自由移动了么? 有没有 提示中 被忽略的地方?


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年4月18日 4:09
  • 猜想是定义在类中的变量——

    public partial class Default2 : System.Web.UI.Page
    {
    int _i=0;
    ………………

    2012年4月23日 5:53
  •     我复制了GridView+TextBox仿Excel輸入可以up/right/down/left(GridView column and row navigation using up/down/right and left arrows )  的代码!不知道是我的问题还是代码的问题,使用方向键还是只能在单元格内移动,稍微不同的是按  上、下 键时,焦点会瞬间移动到该单元格的第一个位置或最后一个位置。

    --------------------------前台代码---------------------------

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default7.aspx.cs" Inherits="Default7" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    <%--    <script language="javascript" type="text/javascript">
            $(document).ready(function() {
                //For navigating using left and right arrow of the keyboard
                var gridview = $("#GridView1");
                $.keynavigation(gridview);
            });
    </script>--%>
        
        <script language="javascript" type="text/javascript">
        $(document).ready(function() {
        //For navigating using left and right arrow of the keyboard
        var gridview = $("#GridView1");
        $.keynavigation(gridview);
            
            $("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>
        
        
        
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        
            <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>
        
        </div>
        </form>
    </body>
    </html>
    

    ------------------------------后台代码----------------------------------

    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();
        }
    }
    


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年4月25日 2:18
  •     我复制了GridView+TextBox仿Excel輸入可以up/right/down/left(GridView column and row navigation using up/down/right and left arrows )  的代码!不知道是我的问题还是代码的问题,使用方向键还是只能在单元格内移动,稍微不同的是按  上、下 键时,焦点会瞬间移动到该单元格的第一个位置或最后一个位置。

     


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    你少引用jQuery核心函式库了,要在所有的script之前先引用才行

    加上这一行试试

      <script src="http://code.jquery.com/jquery-1.7.2.min.js" type="text/javascript"></script>


    2012年4月25日 2:40
  • 按照您的提示我修改了代码,但我没见过 Script 脚本的例子,也不知道这样修改对不对。但结果还是和以前一样,只能在同一个单元格内移动。。。

    下面是我修改后的代码

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default7.aspx.cs" Inherits="Default7" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    
        <script  src="http://code.jquery.com/jquery-1.7.2.min.js" language="javascript" 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>
        
        
        
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        
            <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>
        
        </div>
        </form>
    </body>
    </html>
    


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年4月25日 2:54
  • jQuery核心函式库不是这样引用的

    请看以下粗体部份

    <%@ 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>


    2012年4月25日 3:06
  • 我按照您的代码做了一遍,问题依旧;我重新建立了一个网站,再做了一遍,还是那个老问题!是不是  源代码  有误啊!?

    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年4月25日 3:25
  • 可以试试onkeyup事件用js脚本写!...
    2012年4月27日 3:12
    版主
  • 我还是菜鸟!基本的脚本示例还没接触过,写这个脚本实在写不出来,现在我只能套用别人的代码!套用了五六个都不成功!

    期待您能帮帮我写个切实可行的示例,我可以先“依葫芦画瓢”,慢慢我自己也就会了。谢谢!


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年4月27日 3:39
  • 我帮你写点代码,希望你对你有点帮助

    下面是aspx文件代码

       <asp:TextBox ID="txtdushu_xiao" onkeyup="enter(this)" Text='<%# Eval("dushu_xiao")%>'                                   runat="server"></asp:TextBox>

    同样也可以在.aspx.cs后台动态写

      TextBox myTextBox = new TextBox();
                                myTextBox.Attributes.Add("onkeyup", "enter(this)");
                                

    下面是脚本代码:

    function enter(obj) {
        var tr = obj.parentNode.parentNode;
        if (event.keyCode == 40) //向下的时候
        {
            if (tr.rowIndex < tr.parentNode.rows.length - 1)
                tr.parentNode.rows[tr.rowIndex + 1].cells[obj.parentNode.cellIndex].children[0].focus();
            return;
        }
       if (event.keyCode == 37) //向左的时候
        {
           //代码自己补充下
           return;
        }
       if (event.keyCode == 39) //向右的时候
        {
      //代码自己补充下
             return;
        }
       if (event.keyCode == 38) //向上的时候
        {
      //代码自己补充下
              return;
        }
    }
    希望对你有点启发!



    2012年4月27日 3:50
    版主
  • 给你发布了一个代码示例,你下载看看

    http://code.msdn.microsoft.com/gridview-like-excel-using-8288113a


    2012年4月28日 2:24
    版主
  •    

        谢谢您的回复,我以前没有接触过完整的脚本示例,因此只能照葫芦画个瓢,根据您提供的“向下”的代码,我画了个“向上”的代码,现在单元格可以向下移动,但不能向上移动,看来我画的这个瓢不成功啊。没接触过类似的代码,想请您帮我补全一下,好么?

        另外,我是希望应用在GridView中,我把您提供的代码写到有GridView控件的界面中去,发现在GridView中的Textbox之间不能移动,只能在GridView以外的TextBox之间移动。。。不知道该如何解决。


        我以前参照  GridView+TextBox仿Excel輸入可以  http://www.codeproject.com/Articles/110180/GridView-column-and-row-navigation-using-up-down-r  的代码写了一段代码,也就是本贴的第一帖,后来经过Shadow大的修改(5楼),还是没有成功。我不知道错在哪里!请帮忙看看吧,3Q!!!

    -----------------我画的瓢,失败了---------------

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <style type="text/css">
            .style1
            {
                width: 100%;
            }
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
        <div style="height: 137px">
     
        <script src="http://code.jquery.com/jquery-1.7.2.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            function enter(obj) {
                var tr = obj.parentNode.parentNode;
                if (event.keyCode == 40) //向下的时候
                {
                    if (tr.rowIndex < tr.parentNode.rows.length - 1)
                        tr.parentNode.rows[tr.rowIndex + 1].cells[obj.parentNode.cellIndex].children[0].focus();
                    return;
                }
                if (event.keyCode == 37) //向左的时候
                {
                    
                    return;
                }
                if (event.keyCode == 39) //向右的时候
                {
                    //代码自己补充下
                    return;
                }
                if (event.keyCode == 38) //向上的时候
                {
                    if (tr.rowIndex > tr.parentNode.Rows.length - 1)
                        tr.parentNode.rows[tr.rowIndex -1].cells[obj.parentNode.cellIndex].children[0].focus();
                    return;
                }
            }    </script>
        
            <table class="style1">
                <tr>
                    <td>
        
            <asp:TextBox ID="txtdushu_xiao" runat="server" onkeyup="enter(this)" Text='<%# Eval("dushu_xiao")%>'></asp:TextBox>
                    </td>
                    <td>
                        &nbsp;</td>
                </tr>
                <tr>
                    <td>
            <asp:TextBox ID="TextBox1" runat="server" onkeyup="enter(this)" Text='<%# Eval("dushu_xiao")%>'></asp:TextBox>
            <asp:TextBox ID="TextBox2" runat="server" onkeyup="enter(this)" Text='<%# Eval("dushu_xiao")%>'></asp:TextBox>
            
            
                    </td>
                    <td>
                        &nbsp;</td>
                </tr>
            </table>
        
        </div>
        </form>
    </body>
    </html>


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!



    2012年4月28日 2:44
  •  <script type="text/javascript"> 
            function enter(obj) { 
                var tr = obj.parentNode.parentNode; 
                if (event.keyCode == 40) //Down 
                { 
                    if (tr.rowIndex < tr.parentNode.rows.length - 1) 
                        tr.parentNode.rows[tr.rowIndex + 1].cells[obj.parentNode.cellIndex].children[0].focus(); 
                    return; 
                } 
                if (event.keyCode == 37) //Left 
                { 
                    if (obj.parentNode.cellIndex > 0) 
                        tr.parentNode.rows[tr.rowIndex].cells[obj.parentNode.cellIndex - 1].children[0].focus(); 
                    return; 
     
                } 
                if (event.keyCode == 39) //Right 
                { 
                    if (obj.parentNode.cellIndex < tr.cells.length - 1) 
                        tr.parentNode.rows[tr.rowIndex].cells[obj.parentNode.cellIndex + 1].children[0].focus(); 
                    return; 
     
                } 
                if (event.keyCode == 38) //Up 
                { 
                    if (tr.rowIndex > 1) 
                        tr.parentNode.rows[tr.rowIndex - 1].cells[obj.parentNode.cellIndex].children[0].focus(); 
                    return; 
     
                } 
            }</script>

    上面是完整的脚本代码 你看看咯。。

    还有。。你没看http://code.msdn.microsoft.com/gridview-like-excel-using-8288113a 吗? 我刚刚写描述写了很久。。。

    发布了一个完整的gridview移动代码。。


    2012年4月28日 2:56
    版主
  • 内牛满面了!   解决问题了!

    就是每个控件还要添加上runat 和 onkeyup !!!这个问题是第二个困扰我很久的问题!终于解决了  太感谢了!

    另外贪心的还想多问一点。

        我发现每次使用方向键的时候,它总是会跳到下一个格子里!如果这个格子是空白的,还没什么影响,但如果这个格子有数字,比如“11111111”,我要对它进行修改,就无法用方向键在该单元格内的数字之间进行微调,总是会跳到其他的单元格,不知道GridView能否像Excel那样可以用方向键在单元格之间、单元格内各个数字之间准确移动呢???

    呵呵!   谢谢了!


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!


    2012年4月28日 4:18
  • 其实我建议你用tab 实现 向右切换 enter  向左切换 这样不冲突 比较好解决你上述说的问题

    当然还有比较复杂的方案可以实现和excel的效果。。比如owc之类的控件

    2012年4月28日 6:04
    版主
  • 那么就目前您的示例!能否这样优化一下呢:

        按up跳到上面一行的单元格内,并把焦点定位在该单元格的起始位置;按down跳到下面一行的单元格内,并把焦点定位在该单元格的起始位置;left和right同理。

    问题1.因为我在测试的时候发现每次移动后,焦点的位置不太确定!有时候在起始位置,有时候在末尾,还有时候在第二个位置,这个问题不知道能否在代码中直接解决。

    问题2.您说的那种owc控件我没有在vs2008中看见啊!?  不知道这类控件操作起来对于我  是不是适合,会不会太难了点!


    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年4月28日 7:07
  • 关于owc可以查看百度百科http://baike.baidu.com/view/566954.htm

    不过也是较早的控件了。。下面是我用owc实现的界面截图

    关于光标的定位简单的方法是移动的时候都全选..也就是加上一个select()方法!

        <script type="text/javascript">
            function enter(obj) {
                var tr = obj.parentNode.parentNode;
                if (event.keyCode == 40) //向下的时候
                {
                    if (tr.rowIndex < tr.parentNode.rows.length - 1)
                        tr.parentNode.rows[tr.rowIndex + 1].cells[obj.parentNode.cellIndex].children[0].focus();
                    tr.parentNode.rows[tr.rowIndex + 1].cells[obj.parentNode.cellIndex].children[0].select();
                    return;
                }
                if (event.keyCode == 37) //向左的时候
                {
                    if (obj.parentNode.cellIndex > 0)
                        tr.parentNode.rows[tr.rowIndex].cells[obj.parentNode.cellIndex - 1].children[0].focus();
                    tr.parentNode.rows[tr.rowIndex].cells[obj.parentNode.cellIndex - 1].children[0].select();
                    return;
    
                }
                if (event.keyCode == 39) //向右的时候
                {
                    if (obj.parentNode.cellIndex < tr.cells.length - 1)
                        tr.parentNode.rows[tr.rowIndex].cells[obj.parentNode.cellIndex + 1].children[0].focus();
                    tr.parentNode.rows[tr.rowIndex].cells[obj.parentNode.cellIndex + 1].children[0].select();
                    return;
    
                }
                if (event.keyCode == 38) //向上的时候
                {
                    if (tr.rowIndex > 1)
                        tr.parentNode.rows[tr.rowIndex - 1].cells[obj.parentNode.cellIndex].children[0].focus();
                    tr.parentNode.rows[tr.rowIndex - 1].cells[obj.parentNode.cellIndex].children[0].select();
                    return;
    
                }
            }</script>

    2012年4月28日 7:19
    版主
  • 谢谢啦!  全选有全选的好处! 那个owc等我学多点以后再看,目前感觉太高深!

    C# 菜鸟中的雏鸟!提的问题也许很幼稚,但我是认真的。希望看在党国的面子上拉兄弟一把!

    2012年4月28日 7:47
  • 不客气...
    2012年4月28日 7:50
    版主
  •  <script type="text/javascript"> 
            function enter(obj) { 
                var tr = obj.parentNode.parentNode; 
                if (event.keyCode == 40) //Down 
                { 
                    if (tr.rowIndex < tr.parentNode.rows.length - 1) 
                        tr.parentNode.rows[tr.rowIndex + 1].cells[obj.parentNode.cellIndex].children[0].focus(); 
                    return; 
                } 
                if (event.keyCode == 37) //Left 
                { 
                    if (obj.parentNode.cellIndex > 0) 
                        tr.parentNode.rows[tr.rowIndex].cells[obj.parentNode.cellIndex - 1].children[0].focus(); 
                    return; 
     
                } 
                if (event.keyCode == 39) //Right 
                { 
                    if (obj.parentNode.cellIndex < tr.cells.length - 1) 
                        tr.parentNode.rows[tr.rowIndex].cells[obj.parentNode.cellIndex + 1].children[0].focus(); 
                    return; 
     
                } 
                if (event.keyCode == 38) //Up 
                { 
                    if (tr.rowIndex > 1) 
                        tr.parentNode.rows[tr.rowIndex - 1].cells[obj.parentNode.cellIndex].children[0].focus(); 
                    return; 
     
                } 
            }</script>
    和 http://social.msdn.microsoft.com/Forums/zh-CN/295/thread/56c9f759-51ef-4b46-baea-7b5193643706/#e94b37bd-dd69-418a-b120-7d09408c389f 帖子是一样的!
    2012年5月8日 11:32
    版主
  • 你好linjiangxian11

    由于2个问题相同,我帮你合并你,谢谢你的理解!

    2012年5月8日 11:37
    版主