2009-04-07 5 views
0

gridview에서 dateofbirth 값을 업데이트하는 데 문제가 있습니다.Gridview에서 DOB 값을 업데이트 할 때의 문제점

내 데이터베이스 테이블에는 ... 일, 월, 연도와 같은 필드에 사람의 생일이 저장되어 있습니다. 저장 한 후이 쿼리를 사용하여 DateOfBirth라는 단일 필드에서이 값을 gridview에 표시했습니다.

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

DOB 형식의 DateOfBirth를 표시하는 데 문제가 없습니다. 하지만 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][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> 

내 두 번째 문제는 내가있는 gridview 날짜에 표시하고 때 표시되는 달력 컨트롤에서 날짜를 선택한 다음 텍스트 상자 안에 saving.After 그것을 걸었습니다 때입니다 : 여기

내 코드입니다 정확하게하지만 모든 날짜에 대해 이와 함께 12:00:00 AM입니다. 테이블 및 StoredProcedure에 대해 DatTime으로 찍은 등록 날짜 유형입니다. 내 코드는 다음과 같습니다.

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 = "DD-MMM-YYYY"입니다. DateofBirth 필드가 datetime 유형의 단일 필드가되도록 삽입/업데이트/선택 쿼리를 수정하십시오.

ii. 언제 어디서나 날짜를 표시하려면 표시하려는 방식으로 형식을 지정하십시오.

예 : string date = DateTime.Now.ToString ("dd-MMM-yyyy")

관련 문제