2009-04-07 2 views
0

У меня возникла проблема с обновлением значения dateofbirth из gridview.Проблема с обновлением значения DOB от Gridview

В моей таблице базы данных у меня есть дата рождения человека в поле, подобное ... День, Месяц, Год. После сохранения я отобразил эти значения в gridview под одним полем DateOfBirth, используя этот запрос.

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

Он отлично работает, отображает DateOfBirth с форматом DOB. Но когда я пытаюсь обновить DateOfBirth Contains из gridview, он не обновляется там, где корректно обновляется другое поле в таблице.

Вот мой код:

<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> 

Моя вторая проблема, когда я выбора даты управления каландра и положить его внутри TextBox то saving.After, что, когда я, отображающей в GridView Дата показывает правильно, но вместе с этим для всей даты, время - 12:00:00. Для типа registerdate, как принято DatTime для таблицы и StoredProcedure. Вот мой код:

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); 

ответ

0

i. Хорошая практика хранения даты рождения в db будет хранить его в формате даты. Когда вы привязываетесь к столбцу GridView, вы можете указать форматирование так, как вы хотите отображать.

Свойство вам нужно установить это

DataFormatString = «дд-MMM-YYYY»

выше будет отображать дату в формате, который вы хотите. Измените свои запросы на вставку/обновление/выборку так, чтобы поле DateofBirth было единственным полем типа datetime.

ii. Где бы вы ни отображали дату, укажите формат, который вы хотите отобразить.

например: string date = DateTime.Now.ToString ("dd-MMM-yyyy")

Смежные вопросы