Проблема с обновлением значения DOB из Gridview - PullRequest
0 голосов
/ 07 апреля 2009

У меня проблема с обновлением значения dateofbirth из gridview.

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

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

Работает нормально, отображает DateOfBirth в формате DOB. Но когда я пытаюсь обновить DateOfBirth Содержит из 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]=@Month, [Year]= @Year, [Phone]=@Phone,
         [EmergencyContact]=@EmergencyContact, 
         [DateOfRegistration]=@DateOfRegistration 
         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, а затем сохраняю. После этого при отображении в виде сетки Дата отображается правильно, но вместе с этим для всей даты время равно 12: 00:00 PM. Для регистрации введите дату как 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);

1 Ответ

0 голосов
/ 07 апреля 2009

я. Хорошей практикой для сохранения даты рождения в БД является ее сохранение в формате даты и времени. При привязке к столбцу GridView вы можете указать форматирование, которое будет отображаться так, как вы хотите.

Необходимо установить свойство

DataFormatString = "дд-ммм-гггг"

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

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

например: строка date = DateTime.Now.ToString ("dd-MMM-гггг")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...