如图所示。。
四个textbox全是模板列 数量和售价全是手输入的值
价格=数量*售价(单价)只要价格里有数据,,我就触发 价格这个textbox 的事件,触发它的事件的目的是:优惠金额=每一行价格的总和,,,可能描述的不太清楚。都怪小学语文学得不好。。希望懂我意思的帮帮我在下感激不尽不吃饭。。在线急等。。

解决方案 »

  1.   

    let me see your code...
      

  2.   

    这个没有什么啊,就是界面上写javascript,看脚本功底。
    你不可能指望“纯高手”去给你做这种体力活吧 ^0^!
      

  3.   

    onblur事件里面去做,这个是文本失去焦点时的事件。
      

  4.   

    实现手段比较多
    1种 触发事件后,获取dom,然后查找parent一直查到tr未知
    然后递归遍历tr的dom查找textbox
    第二种是第一种的改进,因为向上查找parent比较麻烦,所以可以给每个textbox加上一个标记,比如className=“mytext+行索引”然后触发以后获取当前textbox的classname,根据这个classname获取同一行的所有textbox
      

  5.   

    放歌,,,你说触发事件,,是不是ontextchanged事件?但我触发不了是什么原因呢?
      

  6.   

    放歌,你说的是ontextchanged 事件?但我触发不了为什么?
      

  7.   

    如果用JS脚本写,那么就是ONCHANGE事件,如果写在服务端,就是ONTEXTCHANGE事件!这个问题是一个很菜的问题,这一点分,很多人不会帮你写代码的, 重金之下出勇夫!
      

  8.   

    js计算gridview 
    添加onkeyup,获取当前行数据实现计算
    http://topic.csdn.net/u/20090411/14/995dadd2-e45e-47ea-8ab9-a583f86024df.html
      

  9.   

    都是说话不腰疼的。。10的,你说有onchange事件?
      

  10.   

    估计你不会用脚本.
    那就用服务器方法吧!编辑模式下,选中文本框所在列,点右键,选择"编辑模板",选择要编辑的模板,再选文本框,在文本框的事件中,选择ONTEXTCHANGE,
    再在ONTEXTCHANGE事件中写代码:
    /// <summary>
            /// 表格中的物料代码改变事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void txtItemNo_TextChanged(object sender, EventArgs e)
            {
                TextBox tb = sender as TextBox;
                int index = (tb.NamingContainer as GridViewRow).RowIndex;
                TextBox txtIsChanged = this.dgDetail.Rows[index].FindControl("txtIsChanged") as TextBox;
                TextBox txtDetailId = this.dgDetail.Rows[index].FindControl("txtdgDetailId") as TextBox;
                txtIsChanged.Text = "1";
                string strItemNo = tb.Text.Trim();
                string strDetailId = txtDetailId.Text.Trim();            StDetail sod = GetMaterialInfo(strItemNo);            if (sod == null)
                {
                    strFailedMessage = "物料数据不存在!";
                    ScriptManager.RegisterStartupScript(this, this.GetType()
                        , "myerrorscript", "alert('" + strFailedMessage + "');", true);
                    return;
                }            bool flag = UpdateDetailInfo(strDetailId, sod);            if (!flag)
                {
                    strFailedMessage = "此记录数据不存在!";                ScriptManager.RegisterStartupScript(this, this.GetType()
                        , "myerrorscript", "alert('" + strFailedMessage + "');", true);
                }
            }
      

  11.   

    非高手,也说一下,可以在onblur事件中处理
      

  12.   

    我的价格借是算出来的,,不是手动修改的啊ontextchange事件,,是在修改时触发的。。
      

  13.   

    function Cal(obj)
            {
                var tr=obj.parentNode.parentNode;
                var num=tr.cells[1].firstChild;
                var pri=tr.cells[2].firstChild; 
                var otherpri=tr.cells[3].firstChild; 
                var pattem=/^\d+(\.\d+)?$/; 
                var sum=0;
                
                document.getElementById("txtYHMoney").value=(num.value==""?0:num.value)*(otherpri.value==""?0:otherpri.value)-(num.value==""?0:num.value)*(pri.value==""?0:pri.value)*(otherpri.value==""?0:otherpri.value)*0.1;//
                document.getElementById("txtYKMoney").value=(num.value==""?0:num.value)*(pri.value==""?0:pri.value)*(otherpri.value==""?0:otherpri.value)*0.1;//
               
                tr.cells[4].firstChild.value=(num.value==""?0:num.value)*(otherpri.value==""?0:otherpri.value);
                
                var table =document.getElementById("GVSales");
                var t=table.getElementsByTagName("tr"); 
                var cellNum = 3 //第4列
                for(i =1;i<t.length;i++)
                {
                     if(pattem.test(tr[i].getElementsByTagName("td")[4].getElementsByTagName("input")[0].value)!="") 
                        a=parseFloat( tr[i].getElementsByTagName("td")[4].getElementsByTagName("input")[0].value ); 
                     else 
                        a=0; 
                     sum=sum+a;
                }
                document.getElementById("txtYSMoney").value=sum;
            }
    我JS能算出每一行的价格,,,就是总的金额。怎么算啊。。我的循环语句就是有问题。。我只不过想看看你们的说法。干嘛不依不饶。。
      

  14.   

    无语。。在能导致价格发生变化的文本框的onchange事件中,写代码更新价格
    比如
    单价X数量=总价
    你就在单价和数量文本框的onchange事件中,写代码更新价格。
      

  15.   

    for(i =1;i<t.length;i++)
      {
      if(pattem.test(tr[i].getElementsByTagName("td")[4].getElementsByTagName("input")[0].value)!="") 
      a=parseFloat( tr[i].getElementsByTagName("td")[4].getElementsByTagName("input")[0].value ); 
      else 
      a=0; 
      sum=sum+a;
      }
      document.getElementById("txtYSMoney").value=sum;
      }这句话有问题JS出错。。帮帮忙看一下吧。。
      

  16.   

    明显用JS
    我相信楼主应该懂得JS取得各控件的引用吧,OK,至于计算什么的,更不在话下,呵呵onchange事件吧,这个在你的焦点离开元素后,自动触发的
      

  17.   

    我能计算出和了,,但输入的时候,,刚开始显示是NaN,直到最后一行计算出值的时候,它才显示出和。。为什么?
      

  18.   

    是的。。但是为什么后面的值也要显示出来呢。。我明明没有计算它啊这是为什么?JS代码如下
    // JScript 文件
    function Cal(obj)
            {
                var tr=obj.parentNode.parentNode;
                var num=tr.cells[1].firstChild;  //数量
                var pri=tr.cells[2].firstChild; 
                var otherpri=tr.cells[3].firstChild; //单价
                var sum=0;
                tr.cells[4].firstChild.value=(num.value==""?0:num.value)*(otherpri.value==""?0:otherpri.value);//价格显示出来。
                var GridView1 = document.getElementById("GVSales");
                for(i=1;i<GridView1.rows.length; i++)
                {
                        sum=parseFloat(sum)+parseFloat(GridView1.rows[i].cells[4].getElementsByTagName("input")[0].value);
               //总价显示为什么直到执行最后一个循环才显示出值,,别的全是显示的NaN
                        document.getElementById("txtYSMoney").value=sum;
                }
                
            }
                    
            
            
      

  19.   

    document.getElementById("txtYSMoney").value=sum;
     这句放在循环外面试下
      

  20.   

    用DataList里面的编辑模板和项目模板就可以完成了,呵呵,好好看看里面的模板应用,这个不是什么大问题,用js的话,要么你对js很厉害。呵呵
      

  21.   

    别的全是显示的NaN 是那个总金额那里还是哪里?