[英]Formatting dynamic GridView
我有一个GridView,其中列是动态的。 GridView绑定到DataTable。
其中一列是DateTime列。 我需要格式化该列以显示“01/01/2010”而不是“01/01/2010 12:00:00 AM”。
我无法更改列来存储字符串而不是DateTime。
最好的方法是什么?
<asp:GridView ID="gvResults" runat="server">
</asp:GridView>
CustomReportDataTable dt = new CustomReportDataTable();
dt.LoadData();
gvResults.DataSource = dt;
gvResults.DataBind();
我假设您正在使用带有AutoGenerateColumns的网格,如果是这种情况,我不确定是否有正确的方法,如果有的话,但这是一种快速而肮脏的方式来更改正在输出的文本。
protected void grdTest_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.DataItem != null)
{
e.Row.Cells[1].Text = DateTime.Parse(e.Row.Cells[1].Text).ToShortDateString();
}
}
此代码将创建一个on row数据绑定事件,然后解析文本,并按照您希望的方式对其进行格式化。 这只会在您知道日期始终位于特定列中时才有效。
如果您想要动态列但更多控制的另一个选项是将AutoGenerateColumns设置为false,并在绑定之前使用所需的列动态填充网格视图的列,这样您就可以使用数据格式字符串。 这是一个更多的工作,但你仍然可以控制你的列:
BoundField Col1 = new BoundField();
Col1.DataField = "StringFieldName";
BoundField Col2 = new BoundField();
Col2.DataField = "DateFieldName";
Col2.DataFormatString = "{0:d}";
grdTest.Columns.Add(Col1);
grdTest.Columns.Add(Col2);
这是一个例子:
<asp:BoundField DataField="DataFieldName" DataFormatString="{0:d}"></asp:BoundField>
这里有一个参考链接:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.boundfield.dataformatstring.aspx
将列添加到网格视图时,可以设置“DisplayFormat”以显示货币。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.