<script language="Javascript"> 
function document.onkeydown() 

if(event.keyCode==13)event.keyCode=9

</script>

解决方案 »

  1.   

    我现在也头疼这个问题:
      第一、如dukaixy所说的这样子,但是,这只是移动到了下个控件,并不是移动到了下行的textbox,如果datagrid潜逃的不是一个控件,你会发现十分头疼;
      第二、在textbox中添加ontextchange事件,并且要加以选择列,当触发事件的时候,datagrid的选择行下移;但是,如果textbox的内容不发生变化,出现的情况将是不变,如果你想继续运行,必须在选择以行,这是客户不愿意操作的
       所以,还没有找到合适的办法,热烈支持你!
      

  2.   

    你这个问题我以前做过,客户也要求实现这样的功能。我是用上下光标来控制的,明天找一下代码给你。
    不过速度上好象不好,CUP老是100%左右。
      

  3.   

    <script>
    <!--
    //客户端文本框光标控制(上下移动)

    //2002-11-18 function window.document.onkeydown()
    {

    if(window.event.srcElement.id!="") 
    {

    if(window.event.keyCode==40||window.event.keyCode==38)
    {
    var txtbox;

    txtbox=window.event.srcElement.id  //取得当前光标所在文本框

    alltxtbox=document.all.tags("Input")
    var txtcol=0; //取得一列文本框的行数
    var txtname
    txtname=txtbox.substring(txtbox.lastIndexOf("_")+1)

    var tt=new Array()
    for (i=0;i<alltxtbox.length;i++)
    {

    if((alltxtbox(i).id).substring((alltxtbox(i).id).lastIndexOf("_")+1)==txtname)
    {
    txtcol+=1
    tt[txtcol]=alltxtbox(i).id
    }
    }



    var flag=0
    for(k=1;k<tt.length;k++)
    {
    if (tt[k]==txtbox)
    {
    flag=k
    break;
    }

    }
    if( flag>1 && flag<tt.length-1)
    {

    if(window.event.keyCode==38)
    {

    window.document.getElementById(tt[flag-1]).select()
    }
    if(window.event.keyCode==40)
    {

    window.document.getElementById(tt[flag+1]).select()
    }
    }
    else if (flag==1)
    {
    if(window.event.keyCode==40)
    {

    window.document.getElementById(tt[flag+1]).select()
    }
    }
    else if(flag==tt.length-1)
    {

    if(window.event.keyCode==38)
    {

    window.document.getElementById(tt[flag-1]).select()
    }
    }
    }
    }
    }

    //-->
    </script>
      

  4.   

    关注,我以前问过类似的问题,没有一个好的解决办法。如果加上OnTextChanged事件会刷新页面,焦点会跑掉,不会到下一行的textbox。高手快出来吧!
      

  5.   

    greystar写得相当不错,不过我把
    <asp:TemplateColumnHeaderText="成绩">
    <ItemTemplate>
    <asp:textboxtext='<%#container.dataItem("成绩")%>'runat="server"ID="tbCJSR" Width=50 TabIndex=1 AutoPostBack=True OnTextChanged="CJPutInCheck"/>
    </ItemTemplate>
    </asp:TemplateColumn>
    改为
    <asp:TemplateColumn HeaderText="成绩">
    <ItemTemplate>
    <input type=Text value='<%# container.dataItem("成绩") %>' name="Edt_BT">
    </ItemTemplate>
    </asp:TemplateColumn>
    后按上下键就不行了
      

  6.   

    那是因为控件的名称不对了。在客户端最终的控件名不对
    if((alltxtbox(i).id).substring((alltxtbox(i).id).lastIndexOf("_")+1)==txtname)你可以看一下客户端的控件名,然后试着改一下就可以了。
      

  7.   

    模板列里的文本框,最终在客户端的名字有_下划线的。你看一下。
    <input type=Text value='<%# container.dataItem("成绩") %>' name="Edt_BT">
    最终是什么名
      

  8.   

    TO greystar,这问题我在您的帮助下已经解决了,在DGGrid中的成绩列中输入成绩后按上下键就上下移动了,非常感谢greystar,但现在是我想在服务器端编程时按“提交按钮”,就把成绩提交到后台数据库中,请问我怎么把DGGrid中列<input type=Text value='<%# container.dataItem("成绩") %>' name="Edt_BT">中的Edt_BT的值依次读出来?
      

  9.   

    我把成绩列的Text每行一个Name,这样就很容易读出它每行的值了,程序如下:
    <asp:TemplateColumn HeaderText="成绩">
       <ItemTemplate>
          <input type=Text value='<%# container.dataItem("成绩") %>' name='AAA<%# 
          container.dataItem("序号")%>'  onchange="setText(this);return false;">
       </ItemTemplate>
    </asp:TemplateColumn>
    <script>
    function window.document.onkeydown()
    {
    if (window.event.keyCode == 13)
       window.event.keyCode =9;
    }

    function setText(inputname)
    {
      if (isNaN(parseFloat(inputname.value)))
      {
            window.alert("输入不正确!");
            inputname.value="";             
      }
      else if(parseFloat(inputname.value)==-1)
            inputname.value="旷考";
      else if (parseFloat(inputname.value)>=0)
            inputname.value=parseFloat(inputname.value);
    }
    </script>问题是我输完后,按回车,光标仍然停留在原来的输入筐里,再按一次回车,才移到下一个输入筐,请问,我怎么按一次回车焦点就移到下一行?
      

  10.   

    你把你的所有代码给我看呢。string aa=((HtmlInputText)e.Item.FindControl("txtRemainNext")).Value;
    可得到客户端txtRemainNext文本框的值或你试一下。
    foreach(DataGridItem item in this.grd1.Items)//此代码我未试过。等会帮你试一下
    {
    string myvalue=item[序号所对应的列数].controls.controls[0].value}
      

  11.   

    上面的兄弟,你的这个移动焦点的方法也太麻烦了。MS本来就提供了方法的,很简单的。你把DataGrid中要输入的嵌入控件的TabIndex 设置为1就可以了,