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

C# GridView如何将字符串格式应用于项,c#,.net,asp.net,gridview,formatting,C#,.net,Asp.net,Gridview,Formatting,我的GridView的columns部分中有以下代码: <Columns> <asp:boundfield datafield="Nominal-Anual" HeaderText="Nominal anual"/> <asp:boundfield datafield="Anual" headertext="Anual" sortexpression="Anual" /> <asp:boundfield datafie

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

<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从一个datatable馈送,其中所有datacolumns都是字符串类型

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

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

会发生什么

提前谢谢

致以最良好的祝愿

何塞

试试看

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

我看到这种情况是因为(如果我错了,请纠正我)字段值是在应用格式之前进行HtmlEncoded的,从而使格式字符串无效

对评论的答复:

您可以尝试使用RowDataBound事件

在以下情况下引发RowDataBound事件: 数据行(由 GridViewRow对象)已绑定到数据 在GridView控件中。这使得 您需要提供事件处理 方法执行自定义例程, 例如修改 数据绑定到行,只要 事件发生


可能格式不起作用,因为它需要数字/十进制值,而您正在发送字符串类型的数据?

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

  • 在TemplateField中转换要更改的边界字段(可以使用设计器进行转换)
  • 移除
  • 处理RowDataBound事件并手动设置文本:
    ((TextBox)e.Row.FindControl(“..”)。text=MyFormatter(e.Row.DataItem)

  • 首先感谢您的回复,我已经试过了,但是没有成功。原因似乎是我的datatable字段的类型为string(问题是我被迫在我的表的列上使用string columns type)。你知道在哪个地方做格式化吗?这样,我可以尝试重写该方法。谢谢。顺致敬意,何塞,你好,请看我的最新答案。您可以在这里应用格式,因为它是在绑定到GridView之前发生的。首先感谢您的回复,我已经尝试过了,但是没有成功。原因似乎是我的datatable字段的类型为string(问题是我被迫在我的表的列上使用string columns type)。你知道在哪个地方做格式化吗?这样,我可以尝试重写该方法。谢谢。致以最良好的祝愿。如果您可以从数据库视图而不是表中检索数据?然后通过将字符串列转换为十进制类型,定义这个新视图以返回小数。您使用的是什么数据库,MS SQL Server?我使用Excel作为数据源。问题是,它将值的范围作为对象数组返回给我。然后我将其转换为一个datatable,将datacolumns创建为字符串,以确保它不会崩溃。如果您不想将datatable中的字符串列更改为say double,那么可以按照Kamal的建议使用RowDataBound事件。