目标 实现 小计=数量*单价
思路 javascript 控制
难点 Repeater 的生成控件Id 不一样
解决办法 后台获取 ClientID
前台代码
<div class="tableList">
<table style="width: 1000px">
<tr style="background-color:#DFECFE">
<th class="style1">
物品名称
</th>
<th width="80px">
单位
</th>
<th width="80px">
单价
</th>
<th width="80px">
数量
</th>
<th width="50px">
小计
</th>
<th width="50px">
已付
</th>
<th width="70px">
备注
</th>
</tr>
<asp:Repeater ID="repList" runat="server" OnItemDataBound="repList_ItemDataBound">
<ItemTemplate>
<tr>
<td>
<asp:TextBox ID="GoodsName" runat='server' Width="90%" ></asp:TextBox><asp:Literal ID='btnSelect' runat='server' ></asp:Literal><asp:HiddenField
ID="GoodsName_value" runat="server" />
</td>
<td>
<asp:DropDownList ID="Unit_DictId" runat="server">
</asp:DropDownList>
</td>
<td>
<asp:TextBox ID="Price" runat='server' Width="90%"></asp:TextBox>
</td>
<td>
<asp:TextBox ID="StockNum" runat='server' Width="90%"></asp:TextBox>
</td>
<td>
<asp:TextBox ID="SubTotal" runat='server' Width="90%"></asp:TextBox>
</td>
<td>
<asp:CheckBox ID="Pay" runat="server" />
</td>
<td>
<asp:TextBox ID="Mem" runat='server' Width="90%"></asp:TextBox>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</div>
javascript代码
<script type='text/javascript'> function GetSubToal(price, num, sub) { var price = document.getElementById(price.id).value; var num = document.getElementById(num.id).value; document.getElementById(sub.id).value = eval(price * num); } </script>
后台代码
1 protected void repList_ItemDataBound(object sender, RepeaterItemEventArgs e) 2 { 3 if (e.Item.FindControl("GoodsName") != null) 4 { 5 TextBox txt = (TextBox)e.Item.FindControl("GoodsName"); 6 DropDownList list = (DropDownList)e.Item.FindControl("Unit_DictId"); 7 list.DataSource = dt_Dict; 8 list.DataTextField ="数据名称"; 9 list.DataValueField = "Id"; 10 list.DataBind(); 11 Literal btnSelect = (Literal)e.Item.FindControl("btnSelect"); 12 btnSelect.Text = "<a href='#' onClick=\"select('GoodsChoice.aspx','" + txt.ClientID + "','请选择物品');\">选择</a>"; 13 TextBox Price_temp = (TextBox)e.Item.FindControl("Price"); 14 TextBox StockNum_temp = (TextBox)e.Item.FindControl("StockNum"); 15 TextBox SubTotal_temp = (TextBox)e.Item.FindControl("SubTotal"); 16 SubTotal_temp.Attributes["OnFocus"] = "GetSubToal(" + Price_temp.ClientID + "," + StockNum_temp.ClientID + "," + SubTotal_temp.ClientID + ")"; 17 } 18 }