用脚本来完成可以通过给TextBox的Id赋值来完成

解决方案 »

  1.   

    // DEMO<%@ Page Language="C#" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Text" %><%--http://topic.csdn.net/u/20080706/11/e66b378d-9307-4663-9c2c-e0855f42965e.html--%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server">
        
        void ShowStudentData()
        {
            DataTable dt = CreateSampleData();        GridView1.DataSource = dt;
            GridView1.DataBind();
        }    #region sample data    static DataTable CreateSampleEmptyDataTable()
        {
            DataTable tbl = new DataTable("Student");        tbl.Columns.Add("StudentNO", typeof(string));
            tbl.Columns.Add("FirstName", typeof(string));
            tbl.Columns.Add("LastName", typeof(string));
            tbl.Columns.Add("Age", typeof(int));
            tbl.Columns.Add("Gender", typeof(string));        return tbl;
        }    static DataTable CreateSampleData()
        {
            DataTable tbl = CreateSampleEmptyDataTable();        tbl.Rows.Add("20021342", "Jack", "Wu", 25, "M");
            tbl.Rows.Add("20025341", "Jue", "You", 23, "F");
            tbl.Rows.Add("20022254", "Viky", "Huang", 24, "F");
            tbl.Rows.Add("20022231", "Leo", "Wong", 24, "M");        return tbl;
        }    #endregion    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ShowStudentData();
            }
        }  
    </script><html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>GridView</title>
        <script type="text/javascript">
        function keyEnter(sender, arg){        
            if(window.event.keyCode == 13) {
                //debugger;
                var row = sender.parentNode.parentNode;
                if(arg.length >1 && arg[1]) {
                    row = row.nextSibling;                
                }            
                if(row == null) return;
                var ipts = row.getElementsByTagName("input");
                var txt2;
                for(var i = 0; i<ipts.length; i++){
                    if(ipts[i].type=="text" && ipts[i].id.indexOf(arg[0]) > 0) {
                        txt2 = ipts[i];
                    }
                }
                if(txt2 != null) txt2.focus();
            }        
        }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" >
            <columns>            
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:TextBox id="TextBox_1" onkeypress="keyEnter(this, ['TextBox_2'])" runat="server" Text='<%# Eval("FirstName") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
                            <asp:TemplateField>
                    <ItemTemplate>
                        <asp:TextBox id="TextBox_2" onkeypress="keyEnter(this, ['TextBox_3'])" runat="server" Text='<%# Eval("LastName") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
                            <asp:TemplateField>
                    <ItemTemplate>
                        <asp:TextBox id="TextBox_3" onkeypress="keyEnter(this, ['TextBox_1', true])"  runat="server" Text='<%# Eval("Age") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
                </columns>
            </asp:GridView>
        </div>
        </form>
    </body>
    </html>
      

  2.   

    感谢晓风残月,我还有一个问题没有说清楚,  
    在gridview中的txtTitle_TextChanged有一事件,每次填写完一个textbox后,都会触发该事件,然后光标会回到页面第一个textbox,如果用上面的方法,就不能实现了.