从Gridview更新DOB值的问题

时间:2009-04-07 05:59:38

标签: c# .net gridview

我在从gridview更新dateofbirth值时遇到问题。

在我的数据库表中,我已将人的出生日期存储在......日,月,年等字段中。存储后,我已使用此查询在名为DateOfBirth的单个字段下在gridview中显示这些值。

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

它工作正常,显示DOB格式的DateOfBirth。但是,当我尝试从gridview更新DateOfBirth Contains时,它不会更新表中的其他字段正确更新的位置。

这是我的代码:

<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然后保存。之后当我显示在gridview中日期正确显示但是对于所有日期,时间是12: 00:00 AM。对于registerdate类型,为table和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);

1 个答案:

答案 0 :(得分:0)

我。将数据存储在数据库中的良好做法是将其存储在日期时间格式中。绑定到GridView列时,可以指定格式以使其显示。

您需要设置的属性是

DataFormatString =“dd-MMM-yyyy”

以上将以您想要的格式显示日期。修改insert / update / select查询,以便DateofBirth字段是datetime类型的单个字段。

II。如果您想要显示日期,请按照您想要显示的方式进行格式化。

例如:string date = DateTime.Now.ToString(“dd-MMM-yyyy”)