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

在ASP.NET中經常會遇到多筆錄入的情況,而且是在ItemTemplate下(許多User都不願編輯一筆存一筆),經過多次的嘗試,近日總算找到了思歸的一小段代碼,解決了我多日來的難題

我有一個頁面但由於筆數不確定,所以只能採用DataGrid來實現,而且還是在ItemTemplate中,當點選客戶下拉選單時要將客戶代號SHOW在旁邊的textbox中,昨天找到一客戶端的參考,今日嘗試改寫後通過啦^__^

參考代碼如下:

1<asp:templatecolumn headertext="数量">
2<itemtemplate>
3<asp:textbox id="ShuLiang" onkeyup='DoCal()"' runat="server" text='```
4# DataBinder.Eval(Container.DataItem,"DG_ShuLiang")
5```'></asp:textbox>
6<asp:regularexpressionvalidator controltovalidate="ShuLiang" errormessage="must be integer" id="revS" runat="server" validationexpression="^\d+$"></asp:regularexpressionvalidator>
7</itemtemplate>
8</asp:templatecolumn>
1<asp:templatecolumn headertext="单价">
2<itemtemplate>
3<asp:textbox id="DanJian" onkeyup='DoCal()"' runat="server" text='```
4# DataBinder.Eval(Container.DataItem,"DG_DanJian")
5```'></asp:textbox>
6<asp:regularexpressionvalidator controltovalidate="DanJian" errormessage="must be numeric" id="revS2" runat="server" validationexpression="^\d+(\\.\d*)?$"></asp:regularexpressionvalidator>
7</itemtemplate>
8</asp:templatecolumn>
1<asp:templatecolumn headertext="金额">
2<itemtemplate>
3<asp:textbox id="JinE" runat="server" text='```
4# DataBinder.Eval(Container.DataItem,"DG_JinE")
5```'></asp:textbox>
6</itemtemplate>
7</asp:templatecolumn>
 1<script language="javascript">   
 2function DoCal()   
 3{   
 4var e = event.srcElement;   
 5var row = e.parentNode.parentNode;   
 6var txts = row.all.tags("INPUT");   
 7if (!txts.length || txts.length < 3)   
 8return;   
 9  
10var q = txts[txts.length-3].value;   
11var p = txts[txts.length-2].value;   
12  
13if (isNaN(q) || isNaN(p))   
14return;   
15  
16q = parseInt(q);   
17p = parseFloat(p);   
18  
19txts[txts.length-1].value = (q * p).toFixed(2);   
20}   
21</script>

資料來源:http://bbs.hidotnet.com/13796/ShowPost.aspx

哈~~在此感謝思歸和整理代碼的朋友^__^

Published At
Categories with Web编程
Tagged with
comments powered by Disqus