C# GridView如何将字符串格式应用于项
我的GridView的columns部分中有以下代码: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
<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控件中。这使得
您需要提供事件处理
方法执行自定义例程,
例如修改
数据绑定到行,只要
事件发生
可能格式不起作用,因为它需要数字/十进制值,而您正在发送字符串类型的数据?我很惊讶您被迫将字符串放在数据库中以代替日期。顺便说一下,要更改格式:
((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事件。