在ASP.NET中用DataGrid的ItemTemplate實現多筆錄入的客戶端寫法

在ASP.NET中經常會遇到多筆錄入的情況,而且是在ItemTemplate下(許多User都不願編輯一筆存一筆),經過多次的嘗試,近日總算找到了思歸的一小段代碼,解決了我多日來的難題
我有一個頁面但由於筆數不確定,所以只能採用DataGrid來實現,而且還是在ItemTemplate中,當點選客戶下拉選單時要將客戶代號SHOW在旁邊的textbox中,昨天找到一客戶端的參考,今日嘗試改寫後通過啦^__^
參考代碼如下:
<asp:TemplateColumn HeaderText="数量"> 
  <ItemTemplate>
   <asp:TextBox id="ShuLiang" runat='server' Text='<%# DataBinder.Eval(Container.DataItem,"DG_ShuLiang")%>'  
    οnkeyup=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")%>' 
    οnkeyup=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>

資料來源:http://bbs.hidotnet.com/13796/ShowPost.aspx
哈~~在此感謝思歸和整理代碼的朋友^__^
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值