GridView中的TemplateField输入字符串格式不正确

时间:2014-03-31 02:47:41

标签: c# asp.net forms gridview web

我有一个模板字段,如下所示在GridView控件中。

<asp:TemplateField HeaderText="Total" SortExpression="CYTotal">            
            <ItemTemplate>
              <asp:Label ID="lblCYTotal" runat="server" MaxLength="20" Width="30" ReadOnly ="true"
                Text = '<%# Bind("CYTotal","{0:#,##0}") %>' Font-Names="Tahoma" Font-Size="8pt"> </asp:Label>
            </ItemTemplate>        
               <HeaderStyle Width="30px" Font-Names="Tahoma" Font-Size="8pt"/>
              <ItemStyle Width="30px" HorizontalAlign="Right" />    
          </asp:TemplateField>

我在RowDataBound事件中设置模板字段内的标签格式,如下所示

if (accountTextBox.Text != "Gross Margin")
                {                 
                    lblCYTotal.Text = String.Format("{0:$#,##0}", Convert.ToDecimal(lblCYTotal.Text));
}
else if (accountTextBox.Text == "Gross Margin")
                {                 
                    lblCYTotal.Text = String.Format("{0:P0}", Convert.ToDecimal(lblCYTotal.Text));
}

然后,在RowUpdating事件中,我使用下面的代码,但它给了我错误&#34; *输入字符串不正确格式 * t&#34;。 我尝试删除&#34;%&#34;签名使用“替换”如下,但没有运气。我也尝试过使用NumberStyles.Currency和NumberStyles.Float。

decimal currency = decimal.Parse(lblCYTotal.Text.Replace("%",""), NumberStyles.Any);

任何帮助都将非常感谢!!!

1 个答案:

答案 0 :(得分:0)

好吧,我发现了这个问题。从数据库中提取的行之一具有NULL值。我把它显示为零(使用ISNULL函数),错误消失了。我不确定这是否是最好的方法,但我无法通过其他方式找出答案。

我在后面的代码中有if语句来检查NULLS并且只格式化非空值,但它没有用。