今天需要做一个如下所示的功能,对单品进行折扣操作。需要在GridView中嵌入DropDownList来实现。
实现方法:
前台代码
<asp:TemplateField HeaderText="折扣">
<ItemTemplate>
<asp:DropDownList ID="drop_zhekou" runat="server" AutoPostBack="true" OnSelectedIndexChanged="drop_zhekou_selected_changed">
<asp:ListItem Text="無折扣" Value="1"></asp:ListItem>
<asp:ListItem Text="9.5折" Value="0.95"></asp:ListItem>
<asp:ListItem Text="9折" Value="0.9"></asp:ListItem>
<asp:ListItem Text="8.5折" Value="0.85"></asp:ListItem>
<asp:ListItem Text="8折" Value="0.8"></asp:ListItem>
<asp:ListItem Text="7折" Value="0.7"></asp:ListItem>
<asp:ListItem Text="6折" Value="0.6"></asp:ListItem>
<asp:ListItem Text="5折" Value="0.5"></asp:ListItem>
<asp:ListItem Text="4折" Value="0.4"></asp:ListItem>
<asp:ListItem Text="3折" Value="0.3"></asp:ListItem>
</asp:DropDownList>
折後價格:<asp:Label ID="lbl_zhehoujia" runat="server" ForeColor="Green"></asp:Label>
</ItemTemplate>
</asp:TemplateField>
后台代码:
protected void drop_zhekou_selected_changed(object sender, EventArgs e)
{
DropDownList drop = sender as DropDownList;
GridViewRow row = drop.Parent.Parent as GridViewRow;
decimal zj = Convert.ToDecimal(row.Cells[4].Text);//获取单品总价
decimal zk = Convert.ToDecimal(drop.SelectedValue);//获取折扣值
((Label)row.Cells[5].FindControl("lbl_zhehoujia")).Text = (zj*zk).ToString();//计算折后价并赋值
getSumprice();//重新计算支付总额
}