Solved

How to format and retrieve a Datatime data from a gridview control?

Posted on 2014-12-21
5
268 Views
Last Modified: 2014-12-21
<asp:BoundField DataField="AccountExpirationDate" HeaderText="Expiration Date" HeaderStyle-VerticalAlign="Middle" HeaderStyle-HorizontalAlign="Center" />
In this column, what can I use for DataFormat string so it displays a short date from the binded datatime data, I don't want the time to display.

Also, how can I retrieve from this column when user update the data.  Currently my code below gives me error.
editUser.AccountExpirationDate = Convert.ToDateTime(editRow.Cells[5].Controls[0]);

I'm also attaching a couple of code snipets.  Thank you
grid.txt
rowUpdating.txt
0
Comment
Question by:lapucca
  • 3
  • 2
5 Comments
 
LVL 35

Accepted Solution

by:
Miguel Oz earned 500 total points
ID: 40512100
To display short date, you can use Dataformatstring property as follows:
<asp:BoundField DataField="AccountExpirationDate" HeaderText="Expiration Date" HeaderStyle-VerticalAlign="Middle" HeaderStyle-HorizontalAlign="Center" DataFormatString="{0:d}" />

Open in new window


To convert the string you need to specify the DT format as shown here :
editUser.AccountExpirationDate = DateTime.ParseExact(editRow.Cells[5].Controls[0].ToString(), "MM/dd/yyyy", null);

Open in new window

Assumption: Your date/time is being entered in US format("MM/dd/yyyy"), change it accordingly based on your server culture. You may consider changing {0:d} to the same format of your mapping to avoid the server culture changing the format the day is represented.
0
 

Author Comment

by:lapucca
ID: 40512335
Hi, the DataFormatString property worked great.  However, I got error, attached screen shot.   Thank you.
dateError.png
0
 

Author Comment

by:lapucca
ID: 40512338
Here is the error detail.

System.FormatException was unhandled by user code
  HResult=-2146233033
  Message=String was not recognized as a valid DateTime.
  Source=mscorlib
  StackTrace:
       at System.DateTimeParse.ParseExact(String s, String format, DateTimeFormatInfo dtfi, DateTimeStyles style)
       at System.DateTime.ParseExact(String s, String format, IFormatProvider provider)
       at NursesTempAccounts._Default.gridAccounts_RowUpdating(Object sender, GridViewUpdateEventArgs e) in c:\Projects\NursesTempAccounts\NursesTempAccounts\Default.aspx.cs:line 177
       at System.Web.UI.WebControls.GridView.OnRowUpdating(GridViewUpdateEventArgs e)
       at System.Web.UI.WebControls.GridView.HandleUpdate(GridViewRow row, Int32 rowIndex, Boolean causesValidation)
       at System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup)
       at System.Web.UI.WebControls.GridView.OnBubbleEvent(Object source, EventArgs e)
       at System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
       at System.Web.UI.WebControls.GridViewRow.OnBubbleEvent(Object source, EventArgs e)
       at System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
       at System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e)
       at System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument)
       at System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
       at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
       at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
  InnerException:
0
 
LVL 35

Expert Comment

by:Miguel Oz
ID: 40512339
The error means that the date time string is not being written with the defined format("MM/dd/yyyy").
Could you post the string returned by "editRow.Cells[5].Controls[0].ToString()"?
I need to check in which format the date time string is returned.
Also need to know what is the server culture. (e.g. en-US ,en-UK ,etc.); as stated in the assumption notes on my previous post  {0:d} returns server short date which may be different from MM/dd/yyyy, if this the case then  you will need to change {0:d} to {0:MM/dd/yyyy}
0
 

Author Comment

by:lapucca
ID: 40512353
editRow.Cells[5].Controls[0].ToString() returns this  "System.Web.UI.WebControls.TextBox"

I put a watch on this expression and it returns the date.  So it would need to first access the Text property to get the data value of the date.
            ((TextBox)(editRow.Cells[5].Controls[0])).Text      " 12/21/2014 12:00:00 AM"      string

This is how I got to work
Convert.ToDateTime(((TextBox)(editRow.Cells[5].Controls[0])).Text);

Thank you.
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now