更新與新代碼(以下舊答案)
您需要使用Javascript功能來你在問什麼。有一百萬種不同的方式,所以你需要修改下面的代碼,使它爲你工作。
創建你的GridView如下:
<asp:GridView runat="server" ID="gv1" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="productName" HeaderText="Item" />
<asp:TemplateField HeaderText="Cost">
<ItemTemplate>
<asp:Label runat="server" ID="unitCost" Text='<%# String.Format("{0:c}",Eval("unitCost")) %>'/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-HorizontalAlign="Center" HeaderText="Old Count">
<ItemTemplate>
<asp:Label runat="server" ID="originalCount" Text='<%# Bind("originalCount") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="New Count" ItemStyle-HorizontalAlign="Center" >
<ItemTemplate>
<asp:TextBox ID="NewCount" Width="20" runat="server" onblur="javascript:GetTotal(this);" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Total" ItemStyle-HorizontalAlign="Center" >
<ItemTemplate>
<asp:Label runat="server" ID="lblTotal"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
下一頁添加以下JavaScript你的頭標記:
<script type="text/javascript">
function GetTotal(obj) {
var rowIndex = obj.id.substring(obj.id.lastIndexOf('_') + 1, obj.id.length);
var unitCost = document.getElementById('MainContent_gv1_unitCost_' + rowIndex).innerHTML.replace("$", "") ;
var originalCount = document.getElementById('MainContent_gv1_originalCount_' + rowIndex).innerHTML;
var NewCount = document.getElementById('MainContent_gv1_NewCount_' + rowIndex).value;
document.getElementById('MainContent_gv1_lblTotal_' + rowIndex).innerHTML = "$" + ((originalCount - NewCount) * unitCost).toFixed(2); }
</script>
有你有它。當您對NewCount進行更改時,總數將自動更新在最右側的列中。
老回答
您可以通過添加一個新的TemplateField,然後寫一個靜態方法來計算總的做到這一點。這是我的頭頂,但你做了類似於下面的內容。
首先,添加以下的TemplateField:
<asp:TemplateField HeaderText="Total" ItemStyle-HorizontalAlign="Center" >
<ItemTemplate>
<%# GetTotal((double)Eval("originalCount"),(double)Eval("NewCount"),(double)Eval("unitCost")) %>
</ItemTemplate>
</asp:TemplateField>
然後,在代碼隱藏,添加以下靜態方法:
public static double GetTotal(double originalCount, double NewCount, double unitCost) {
return (originalCount - NewCount) * unitCost;
}
最終的結果將是具有期望的計算出的柱總。
當用戶更改文本中的字段或者是否需要刷新頁面時,此更新是否會自動進行? – Ben 2011-01-26 07:53:40