2009-04-07 7 views
0

J'ai un problème avec la mise à jour de la valeur dateofbirth de gridview.Problème avec la mise à jour de la valeur DOB de Gridview

Dans ma base de données j'ai stocké la date de naissance de la personne dans un champ comme ... Jour, Mois, Année. Après le stockage, j'ai affiché ces valeurs dans gridview sous un seul champ appelé DateOfBirth en utilisant cette requête.

SELECT Id, Name, Address, Day + '-' + Month + '-' + Year AS DateOfBirth, 
    Phone, EmergencyContact, DateOfRegistration FROM Patient 

Cela fonctionne très bien, affichant le format DateOfBirth avec DOB. Mais quand j'essaye de mettre à jour le DateOfBirth Contient de gridview son ne met pas à jour où l'autre champ dans la table met à jour correctement.

Voici mon code:

<Columns> 
    <asp:BoundField DataField="DateOfBirth" HeaderText="DateOfBirth" 
     SortExpression="DateOfBirth" /> 
</Columns> 
<asp:SqlDataSource> 
    InsertCommand="INSERT INTO [Patient] ([Name], [Address], [Day],[Month], 
     [Year], [Phone], [EmergencyContact], [DateOfRegistration]) 
     VALUES (@Name, @Address, @Day, @Month, @Year, @Phone, 
     @EmergencyContact, @DateOfRegistration) 
    ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" 
    SelectCommand="SELECT Id, Name, Address, Day + '-' + Month + '-' + 
      Year AS DateOfBirth, Phone, EmergencyContact, DateOfRegistration 
      FROM Patient 
    UpdateCommand="UPDATE [Patient] SET [Name] = @Name, [Address] = @Address, 
     [Day] = @Day, [Month][email protected], [Year]= @Year, [Phone][email protected], 
     [EmergencyContact][email protected], 
     [DateOfRegistration][email protected] 
     WHERE [Id] = @Id"> 
    <InsertParameters> 
     <asp:Parameter Name="Day" Type="String" /> 
     <asp:Parameter Name="Month" Type="String" /> 
     <asp:Parameter Name="Year" Type="String" /> 
    </InsertParameters> 
    <UpdateParameters> 
     <asp:Parameter Name="Day" Type="String" /> 
     <asp:Parameter Name="Month" Type="String" /> 
     <asp:Parameter Name="Year" Type="String" /> 
    </UpdateParameters> 
</asp:SqlDataSource> 

Mon deuxième problème est quand je suis sélectionnant la date du contrôle de calendrier et de le mettre à l'intérieur de la zone de texte puis saving.After que lorsque je suis l'affichage de la Date gridview montre des correctement mais avec cela pour toute la date, l'heure est 12:00:00 AM. Pour le type registrationdate, saisissez DatTime pour la table et StoredProcedure. Voici mon code:

protected void 
CalendarRegistrationDate_SelectionChanged(object sender, EventArgs e) 
{ 
    TxtRegistrationDate.Text = 
     CalendarRegistrationDate.SelectedDate.ToShortDateString(); 
    CalendarRegistrationDate.Visible = false; 
} 

protected void BtnCalender_Click(object sender, EventArgs e) 
{ 
    CalendarRegistrationDate.Visible = true;   
} 

DateTime registrationdate = Convert.ToDateTime(TxtRegistrationDate.Text); 

Répondre

0

i. Une bonne pratique pour stocker la date de naissance dans la base de données serait de la stocker au format date/heure. Lorsque vous liez à la colonne GridView, vous pouvez spécifier la mise en forme de la manière que vous souhaitez afficher.

La propriété que vous devez définir est

DataFormatString = "dd-MMM-aaaa"

ci-dessus affiche la date dans le format que vous voulez. Modifiez vos requêtes insert/update/select afin que le champ DateofBirth soit un seul champ de type datetime.

ii. Où que vous vouliez afficher la date, formatez comme vous voulez l'afficher.

par exemple: date chaîne = DateTime.Now.ToString ("dd-MMM-yyyy")

Questions connexes