在DataGrid中有3个模板列包含Textbox分别为 DG_ShuLiang (数量) DG_DanJian(单价) DG_JinE(金额)分别在5.6.7列,要求在录入数量及单价的时候自动算出金额即:数量*单价=金额还要求录入时限制为 数值型.我如何用客户端脚本实现这个功能?

asp:TemplateColumn   HeaderText="数量"      
  
ItemTemplate     
  
asp:TextBox   id="ShuLiang" runat=’server’ Text=’%#   DataBinder.Eval   (Container.DataItem,"DG_ShuLiang")%’      
  onkeyup="javascript
DoCal()"   /        

  asp:RegularExpressionValidator   id="revS"   runat="server"   ControlToValidate="ShuLiang"   ErrorMessage="must   be   integer"   ValidationExpression="^\d+$"   /     
  
/ItemTemplate     
  
/asp:TemplateColumn    
  
asp:TemplateColumn   HeaderText="单价"      
  
ItemTemplate     
  
asp:TextBox   id="DanJian"   runat=’server’   Text=’%#   DataBinder.Eval(Container.DataItem,"DG_DanJian")%’      
  onkeyup="javascript:DoCal()" /
      
  
asp:RegularExpressionValidator   id="revS2"   runat="server"   ControlToValidate="DanJian"   ErrorMessage="must   be   numeric"   ValidationExpression="^\d+(\.\d*)?$"   /         
  
/ItemTemplate     
  
/asp:TemplateColumn     
   
  
asp:TemplateColumn   HeaderText="金额"      
  
ItemTemplate     
  
asp:TextBox   id="JinE"   runat=’server’   Text=’%#   DataBinder.Eval(Container.DataItem,"DG_JinE")%’   /     
  
/ItemTemplate     
  
/asp:TemplateColumn

script   language="javascript"     
  function   DoCal()     
  {     
  
 var   e   =   event.srcElement;     
  
 var   row   =   e.parentNode.parentNode;     
  
 var   txts   =   row.all.tags("INPUT");     
  
 if   (!txts.length   ||   txts.length      3)     
  
  return;     
   
  
 var   q   =   txts[txts.length-3].value;     
  
 var   p   =   txts[txts.length-2].value;     
   
  
 if   (isNaN(q)   ||   isNaN(p))     
  
  return;         
  
 q   =   parseInt(q);     
  
 p   =   parseFloat(p);         
  
 txts[txts.length-1].value   =   (q   *   p).toFixed(2);     
  }     
  
/script      

posted @ 2009-03-23 12:35  编程小小生  阅读(167)  评论(0编辑  收藏  举报