BUG:如果后台给NumberBox的text赋值为 类似 1.30 1.670 这种尾数还有0的数据的时候 则系统会自己触发 OnTextChanged 事件 。
如下代码 大大可以测试下 先选择酱油在选择其他的。。总和的数据就会变了。。
直接贴代码 前台
<ext ageManager ID=" ageManager1" runat="server" />
<ext:Form ID="a1" runat="server" >
<Rows>
<ext:FormRow runat="server">
<Items>
<ext:NumberBox ID ="price" runat="server" Label ="单价" MaxLength="20" AutoPostBack="True" EmptyText="0.00" OnTextChanged="price_TextChanged" Text="0" ></ext:NumberBox>
<ext:NumberBox ID ="amount" runat="server" Label ="数量" MaxLength="20" EmptyText="0.00" OnTextChanged="amount_TextChanged" AutoPostBack="True" Text="1" ></ext:NumberBox>
<ext:NumberBox ID ="discount" runat="server" Label ="折扣" MaxLength="20" EmptyText="0.00" OnTextChanged="discount_TextChanged" AutoPostBack="True" Text="100" ></ext:NumberBox>
<ext:NumberBox ID ="total" runat="server" Label ="总额" MaxLength="20" EmptyText="0.00" ></ext:NumberBox>
</Items>
</ext:FormRow>
<ext:FormRow runat="server">
<Items>
<ext ropDownList ID="d1" runat ="server" Label="商品" OnSelectedIndexChanged="d1_SelectedIndexChanged" AutoPostBack="True" >
<ext istItem Value="13.10" Text ="酱油"/>
<ext istItem Value="15.10" Text ="大蒜"/>
<ext istItem Value="34.30" Text ="酒精"/>
<ext istItem Value="39.10" Text ="棉花"/>
</ext ropDownList>
<ext ropDownList ID ="d2" runat="server" Label="折扣" OnSelectedIndexChanged="d2_SelectedIndexChanged" AutoPostBack="True" >
<ext istItem Value="70" Text ="7折"/>
<ext istItem Value="80" Text ="8折"/>
</ext ropDownList>
</Items>
</ext:FormRow>
</Rows>
</ext:Form>
后台
protected void d1_SelectedIndexChanged(object sender, EventArgs e)
{
price.Text = d1.SelectedValue;
}
protected void d2_SelectedIndexChanged(object sender, EventArgs e)
{
discount.Text = d2.SelectedValue;
}
private decimal parse(string s)
{
decimal d;
decimal.TryParse(s, out d);
return d;
}
private void total1()
{
total.Text = Convert.ToString(parse(price.Text) * parse(amount.Text) * parse(discount.Text) / 100);
}
protected void price_TextChanged(object sender, EventArgs e)
{
total1();
}
protected void amount_TextChanged(object sender, EventArgs e)
{
total1();
}
protected void discount_TextChanged(object sender, EventArgs e)
{
total1();
} |