【问题标题】:How to change the direction of a BoundField in GridView如何在 GridView 中更改 BoundField 的方向
【发布时间】:2009-12-13 19:01:47
【问题描述】:

对不起,如果我的问题看起来很简单。

现在在我的 GridView 的 BoundField 中,一些数据显示为“12/11/1381”,我想显示为“1381/11/12”(相反方向)。

我知道我可以通过 TemplateField 中的 rtl 和 ltr 改变方向。但由于某种原因,我无法将绑定字段转换为模板字段。

为了改变方向,我查看了所有 BoundField 属性,但什么也没找到。

我认为应该在 GridView 的 RowDataBound 事件中完成,但我不知道怎么做!?

您对此案有何看法?
提前致谢。

【问题讨论】:

  • “12/11/1381”是日期吗?
  • 是的。那是日期,但在字符串中。

标签: asp.net gridview boundfield


【解决方案1】:

好的,因为它是作为字符串输入的日期,所以至少有两种方法可以做到。

方法一
将字符串数据绑定为Date 对象而不是String。由于我现在不知道原始日期的确切日期格式,dd/MM/yyyy 或 MM/dd/yyyy,你必须自己弄清楚。

如果可以,只需将其添加到“BoundField”元素:

DataFormatString="{0:yyyy/MM/dd}" 

DataFormatString="{0:yyyy/dd/MM}" 

方法二
操作 ROwDataBound oevent 中的文本。我在这里做了一个可以抛光的粗略的。您可能应该将它们作为Date 对象来操作。

在 ASPX 中:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" 
 onrowdatabound="GridView1_RowDataBound">

代码隐藏:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType != DataControlRowType.DataRow)
        return;
    // assuming the date is at cell index 1
    string[] arr = e.Row.Cells[1].Text.ToString().Split('/');
    e.Row.Cells[1].Text = string.Format("{0}/{1}/{2}", arr[2], arr[1], arr[0]);
}

【讨论】:

  • 谢谢。这绝对适用于我有 datetime 的情况。但在其他情况下,我的 boundfield 是字符串数据类型而不是 datetime 。除了转换为模板字段之外的任何解决方案?
  • @Mostafa:我不太明白你的问题。 RowDataBound 事件允许你执行任何字符串操作,不必是Date 类型。
【解决方案2】:

首先确保你已经设置了HtmlEncode="False"

尝试将此添加到 BoundField 标记 -

DataFormatString="{0:yyyy/MM/dd}"

这是一篇可以帮助你的好文章 - How To Set a Date Format In GridView

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 2023-03-29
    • 2011-10-29
    • 2011-05-14
    • 2018-03-11
    • 2011-03-06
    • 1970-01-01
    相关资源
    最近更新 更多