我在GRIDVIEW中放了3列摸板框,里面都是TEXTBOX,现在页面加载后,我希望这样一个功能。比如在A,和B文本框里面输入数字和,自动在当前行C框里面计算结果,比如用户在A里面输入10,B里面输入5,这时对应的C行结果自动跳成50,需要写在那个事件里面呀?期待高手解答

解决方案 »

  1.   

    这个功能就目前我知道的东西来讲,要自己写,我是在做考试系统算分的时候做过用js来算的~至少vs还没有自带这种功能如果用第三方控件的,有可能会实现,期待高手~  学习一下
      

  2.   

    <asp:TemplateField HeaderText="用量(Yid)" SortExpression="yid">                             <ItemTemplate> 
                                    <asp:TextBox ID="TextBox4" onkeydown="checkFloat(event)" runat="server" Height="22px" 
                                        Text=' <%# Bind("yid") %>' Width="50px" onkeyup="buliao(this)"> </asp:TextBox>                    
                                </ItemTemplate> 
                            </asp:TemplateField> 
                            <asp:TemplateField HeaderText="单价(price)" SortExpression="price">                             <ItemTemplate> 
                                     <asp:TextBox ID="TextBox5" onkeydown="checkFloat(event)" runat="server" Height="22px" 
                                        Text=' <%# Bind("price") %>' Width="50px" onkeyup="buliao(this)"> </asp:TextBox>                   
                                </ItemTemplate> 
                            </asp:TemplateField> 
                            <asp:TemplateField HeaderText="总价(TOTAL)" SortExpression="TOTALPRICE"> 
                                <ItemTemplate> 
                                    <asp:TextBox ID="TextBox8" runat="server" Height="22px" 
                                        Text=' <%# Bind("TOTALPRICE") %>' Width="50px"> </asp:TextBox> 
                                </ItemTemplate>
                           </asp:TemplateField> function checkFloat(e){
        var result=true;
        result = (event.keyCode == 9 ||event.keyCode == 45 ||
        event.keyCode == 46 ||
        event.keyCode == 37 ||
        event.keyCode == 39 ||
        event.keyCode == 8 ||
        event.keyCode == 110 ||
        event.keyCode == 190 ||
        (event.keyCode>=96 && event.keyCode<=105) ||
        (event.keyCode>=48 && event.keyCode<=57));
        event.returnValue=result;
    }function buliao(obj)
    {
       
       var TRCurrent=obj.parentNode.parentNode;
       var inputs=TRCurren.getElementsByTagName("input"); 
       var  text6=null;   
       var  text5=null;  
       var  text4=null;    for(var i=0;i<inputs.length;i++)
       {
         if(inputs[i].id.indexOf("TextBox4")>0)
         {
            text4=inputs[i];
         }
        if(inputs[i].indexOf("TextBox5")>0)
         {
            text5=inputs[i];
         }
        if(inputs[i].indexOf("TextBox8")>0)
         {
            text6=inputs[i];
         }
      }
      if(text4!=null && text5!=null && text6!=null)
      {
          text6.value=parseFloat(text4.value)*parseFloat(text5.value);
      }
    }
      

  3.   

    在界面上验证一下输入是否为数字,是就转JS执行B文本框的onkeyup事件,在此事件里处理求和并赋值到C文本框;
    否就提示输入数字
      

  4.   

    to 4楼
    keyup时候怎么不执行呀
      

  5.   

    <script language="javascript">
        function checkFloat(e){
        var result=true;
        result = (event.keyCode == 9 ||event.keyCode == 45 ||
        event.keyCode == 46 ||
        event.keyCode == 37 ||
        event.keyCode == 39 ||
        event.keyCode == 8 ||
        event.keyCode == 110 ||
        event.keyCode == 190 ||
        (event.keyCode>=96 && event.keyCode<=105) ||
        (event.keyCode>=48 && event.keyCode<=57));
        event.returnValue=result;
    }function buliao(obj)
    {
       
       var TRCurrent=obj.parentNode.parentNode;
       var inputs=TRCurrent.getElementsByTagName("input"); 
       var  text6=null;   
       var  text5=null;  
       var  text4=null;    for(var i=0;i<inputs.length;i++)
       {
         if(inputs[i].id.indexOf("TextBox4")>0)
         {
            text4=inputs[i];
         }
        if(inputs[i].id.indexOf("TextBox5")>0)
         {
            text5=inputs[i];
         }
        if(inputs[i].id.indexOf("TextBox8")>0)
         {
            text6=inputs[i];
         }
      }
      if(text4!=null && text5!=null && text6!=null)
      {
          text6.value=parseFloat(text4.value)*parseFloat(text5.value);
      }
    }    </script>再试试
      

  6.   

    我再问一个呀,怎么在GRIDVIEW的当前模板列里面,获取当前行的行号呀
      

  7.   


    <%# ((GridViewRow)Container).RowIndex %>