图片如上,要实现的功能是:
我填写数量的时候,可以根据单价自动算出金额,并且统计出“选择”勾上了的总金额。
数量单价金额的aspx代码:
<asp:TemplateField HeaderText="数量">
<ItemTemplate>
<asp:TextBox ID="tbNum" runat="server" Style="z-index: 100; left: 34px;width:70px" AutoPostBack="True" OnTextChanged="tbNum_TextChanged"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="ItemPrice" HeaderText="单价" SortExpression="c.ItemPrice" >
<HeaderStyle Wrap="False" />
<ItemStyle Wrap="False" />
</asp:BoundField>
<asp:TemplateField HeaderText="金额">
<ItemTemplate>
<asp:TextBox ID="tbMoney" runat="server" Style="z-index: 100; left: 34px;width:70px" ReadOnly="True" AutoPostBack="True"></asp:TextBox>
<%--<asp:Label ID="lbMoney" runat="server"></asp:Label>--%>
</ItemTemplate>
</asp:TemplateField>
提供个思路,不一定是最好的~ 个人观点~ ^_^
<script language="javascript">
<!--
function changeStatus(e){
var currentRow = event.srcElement.parentElement.parentElement;
var currentCheckbox = currentRow.cells[0].firstChild;
var currentTextBox = currentRow.cells[3].firstChild;
if(event.srcElement.value != '')
{
var currentNum = event.srcElement.value;
var currentPrice = currentRow.cells[2].innerText;
currentCheckbox.checked = true;
currentTextBox.value = parseFloat(currentNum) * parseFloat(currentPrice);
}
else
{
currentTextBox.value = '';
currentCheckbox.checked = false;
}
}
// -->
</script>
<table border="0" cellpadding="0" cellspacing="0" >
<tr >
<td ><input type="checkbox" id="checkboxSelect"></td>
<td ><input type="text" id="tbNum" onpropertychange="changeStatus(this)" /></td>
<td >25</td>
<td ><input type="text" id="tbMoney" /></td>
</tr>
</table>
<!--
function changeStatus(e){
var currentRow = event.srcElement.parentElement.parentElement;
var currentCheckbox = currentRow.cells[0].firstChild;
var currentTextBox = currentRow.cells[3].firstChild;
if(event.srcElement.value != '')
{
var currentNum = event.srcElement.value;
var currentPrice = currentRow.cells[2].innerText;
currentCheckbox.checked = true;
currentTextBox.value = parseFloat(currentNum) * parseFloat(currentPrice);
}
else
{
currentTextBox.value = '';
currentCheckbox.checked = false;
}
var conditionTable = document.getElementById('mytable');
var pirceCount = '0';
for (i = 0; i < conditionTable.rows.length; i++) {
var cCheckbox = conditionTable.rows[i].cells[0].firstChild;
if(cCheckbox.checked)
{
var cTextBox = conditionTable.rows[i].cells[3].firstChild;
var cValue = cTextBox.value;
if(cValue!='')
{
pirceCount = parseFloat(pirceCount) + parseFloat(cValue);
}
}
}
alert(pirceCount);
document.getElementById('allCount').innerText = pirceCount;
}
// -->
</script>
<table border="0" cellpadding="0" cellspacing="0" id="mytable">
<tr >
<td ><input type="checkbox" id="checkboxSelect0"></td>
<td ><input type="text" id="tbNum0" onpropertychange="changeStatus(this)" /></td>
<td >25</td>
<td ><input type="text" id="tbMoney0" /></td>
</tr>
<tr >
<td ><input type="checkbox" id="checkboxSelect1"></td>
<td ><input type="text" id="tbNum1" onpropertychange="changeStatus(this)" /></td>
<td >25</td>
<td ><input type="text" id="tbMoney1" /></td>
</tr>
<tr >
<td ><input type="checkbox" id="checkboxSelect2"></td>
<td ><input type="text" id="tbNum2" onpropertychange="changeStatus(this)" /></td>
<td >50</td>
<td ><input type="text" id="tbMoney2" /></td>
</tr>
</table>
<span id= "allCount"> </span>
在脚本里循环总行数计算就可以了.
恩,只填数量,单价是后台取出来的,单价和金额是readonly="true"的哈。
我是想,如果选择框没勾上,则金额不会计算的,勾上了才会去计算哈,然后算下所有勾上的那行记录的金额求和一下。