繁体   English   中英

格式化动态GridView

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM