5
votes

I'm struggline with syntax gremlins with the WebGrid. In my normal razor markup i format a date inside my foreach like so

<td>
        @String.Format("{0:MM/dd/yy hh:mm:ss}", item.complianceedatetime)
    </td>

and I set my column width like so

<th width="150px">
        Download Date/Time
    </th>

How would I do this with the Grid.Column syntax

grid.Column("complianceedatetime", "Download Date/Time", ?, ?)
4

4 Answers

8
votes
@grid.GetHtml(
    column: grid.Columns(
              grid.Column("Complianceedatetime", "Download Date / Time", 
format: @<text>@item.complianceedatetime.ToString("MM/dd/yy hh:mm:ss")</text>)
            )
)

I know this works because I have this exact code in my project:

grid.Column(
            "PublishDate",
            canSort: true,
            format: @<text>@item.PublishDate.ToString("MM/dd/yyyy")</text>
        ),
3
votes

If DateTime Property is defined as (can contain null):

public DateTime? WorkedDate { get; set; }

Use this format:

grid.Column("WorkedDate", "Last Worked On",
   format: (item) => item.WorkedDate != null 
   ? item.WorkedDate.ToString("MM/dd/yy") : "", canSort: true)

Otherwise if it is defined as below (can't be null), it will have either actual date or .MinDate as the default.

public DateTime WorkedDate { get; set; }

Use format:

grid.Column("WorkedDate", "Last Worked On",
   format: (item) => item.WorkedDate != DateTime.MinValue ? 
   item.WorkedDate.ToString("MM/dd/yy") : "", canSort: true)
1
votes

You could try this:

@grid.GetHtml(
    column: grid.Columns(
              grid.Column("Complianceedatetime", "Download Date / Time", format: (item) => string.Format("{0:MM/dd/yy hh:mm:ss}", item.complianceedatetime)
            )
)
0
votes

Try this option for better globalization

    @grid.GetHtml(
        column: grid.Columns(
                  grid.Column("Complianceedatetime", "Download Date / Time", 
                  format: @@String.Format("{0:g}",complianceedatetime))
                )
    )