GridView如何将字符串格式应用于项目

时间:2010-08-03 09:22:00

标签: c# .net asp.net gridview formatting

我在GridView的列部分中有以下代码:

<Columns>
      <asp:boundfield datafield="Nominal-Anual" HeaderText="Nominal anual"/>
      <asp:boundfield datafield="Anual" headertext="Anual" sortexpression="Anual" />
      <asp:boundfield datafield="Semestral" headertext="Semestral" DataFormatString="{0:0.00}" />
      <asp:BoundField DataField="Trimestral" HeaderText="Semestral" HtmlEncode="false" DataFormatString="{0:00.0000}" />
      <asp:BoundField DataField="Mensual" HeaderText="Mensual" />
</Columns>

此gridview是从数据表中提供的,其中所有数据列都是字符串类型。

我的问题是DataFormatString没有被应用,我也不知道为什么。

我在所有列中都得到了很多小数,包括带有dataformatstrings的小数。

可能会发生什么?

提前致谢。

最诚挚的问候。

3 个答案:

答案 0 :(得分:2)

也许格式化不起作用,因为它需要数字/十进制值而你发送字符串类型的数据?

答案 1 :(得分:1)

尝试

<asp:boundfield datafield="Semestral" headertext="Semestral" DataFormatString="{0:0.00}" HtmlEncode="false" />

我已经看到这种情况发生了,因为(如果我错了,请纠正我)在应用格式之前字段值是HtmlEncoded,使格式字符串无效。

对评论的回应:

您可以尝试使用RowDataBound事件。

  

当引发RowDataBound事件时   数据行(由a表示)   GridViewRow对象)绑定到数据   在GridView控件中。这使得   你提供一个事件处理   执行自定义例程的方法,   比如修改值   绑定到行的数据,无论何时   事件发生。

答案 2 :(得分:1)

我很惊讶您被迫在数据库中放置字符串来代替日期。顺便说一下,改变格式:

  1. 在TemplateField中转换要更改的BoundField(可以使用设计器执行此操作)
  2. 删除&lt;%#Bind(...)%&gt;
  3. 处理RowDataBound事件并手动设置文本:((TextBox)e.Row.FindControl("..")).Text = MyFormatter(e.Row.DataItem);