我需要动态更改itemTemplate中文本框的'数字格式'。我没有尝试过任何工作,我会很感激一些想法。
原始代码的一个非常简化的版本是:
<asp:GridView ID="gv1">
<Columns>
<asp:TemplateField HeaderText="Xfer From">
<ItemTemplate>
<asp:TextBox ID="txtTransferFrom" runat="server" Text='<%# Bind ("FundValueTransferFrom", "{0:0.00}") %>' />
<asp:RangeValidator ID="val1" runat="server" ControlToValidate="txtTransferFrom" Type="Currency" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
请注意小数格式(“{0:0.00}”)和绑定字段的货币类型。
现在我需要做的是,根据此页面上单选按钮的设置,更改格式化。在一个州,它需要是两位小数的货币;在另一方面,它必须是小数点后三位的百分比。
这听起来很简单,但我不能让它发挥作用。理想情况下,我想在'radioButton_SelectedIndexChanged'方法中放入一些代码,但我似乎无法从那里访问该格式。
我还尝试在ASPX页面上的内联代码(&lt; %%&gt;)中使用“if”语句,但它不响应单选按钮的更改。我必须提到这个网格在更新面板中......我试着调用 UP.Update(),但它不能解决问题。我确实从ASPX页面中删除了初始格式,这样它就不会干扰 - 没有。
一个解决方案可能是在代码隐藏中格式化数字字符串,但我不能 - 网格绑定到一个对象,其字段是“双”而不是字符串...转换为字符串正在发生隐含在数据绑定中。
有没有人有其他方法我可能尝试以编程方式切换此格式?提前感谢任何见解!
答案 0 :(得分:0)
在ASPX(缩写标签)中:
<asp:TextBox ID="txtTransferFrom" ... " Text='<%# Eval("FundValueTransferFrom") != null ? GetFormattedString((double)Eval("FundValueTransferFrom")) : Eval("FundValueTransferFrom") %>' ...">
在代码隐藏中:
public string GetFormattedString(double val)
{
string newVal;
if (rblFtmp1.Text == DOLLAR)
{
newVal = String.Format("{0:0.00}", val);
}
else // If not DOLLAR then it's PERCENT
{
newVal = String.Format("{0:0.000}", val);
}
return newVal;
}