2014-08-28 105 views
1

我有一个radgrid与下面的设置。我可以在表中正确插入新行,但Time_Stamp列仍显示为NULL。数据库中的数据类型为datetime。我试过在我的Insert查询中包含Time_Stamp,但在另一侧仍然得到NULL自动插入日期时间插入

<telerik:RadGrid ID="Grid_ValueCard" runat="server" DataSourceID="SqlValueCard" AutoGenerateEditColumn="True" AllowAutomaticUpdates="True" Width="750px" Skin="WebBlue" AllowAutomaticInserts="True" CellSpacing="0" GridLines="None"> 
    <MasterTableView AutoGenerateColumns="False" AllowAutomaticUpdates="True" DataSourceID="SqlValueCard" CommandItemDisplay="Top"> 
     <CommandItemSettings ShowCancelChangesButton="True" ShowSaveChangesButton="True" /> 
     <Columns> 
      <telerik:GridBoundColumn DataField="ProviderID" DataType="System.Int32" FilterControlAltText="Filter ProviderID column" HeaderText="ProviderID" SortExpression="ProviderID" UniqueName="ProviderID"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn DataField="AdditionalReports" DataType="System.Byte" FilterControlAltText="Filter AdditionalReports column" HeaderText="AdditionalReports" SortExpression="AdditionalReports" UniqueName="AdditionalReports"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn DataField="SurveyCompleted" DataType="System.Byte" FilterControlAltText="Filter SurveyCompleted column" HeaderText="SurveyCompleted" SortExpression="SurveyCompleted" UniqueName="SurveyCompleted"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn DataField="UniqueReportRequests" DataType="System.Byte" FilterControlAltText="Filter UniqueReportRequests column" HeaderText="UniqueReportRequests" SortExpression="UniqueReportRequests" UniqueName="UniqueReportRequests"> 
      </telerik:GridBoundColumn> 
      <telerik:GridBoundColumn DataField="Time_Stamp" DataType="System.DateTime" FilterControlAltText="Filter Time_Stamp column" HeaderText="Time_Stamp" SortExpression="Time_Stamp" UniqueName="Time_Stamp"> 
      </telerik:GridBoundColumn> 
     </Columns> 
    </MasterTableView> 
</telerik:RadGrid> 

这里是我的SqlDataSource

<asp:SqlDataSource ID="SqlValueCard" runat="server" ConnectionString="<%$ ConnectionStrings:RTMD_MSConnectionString %>" SelectCommand="SELECT TOP 1 ProviderID, AdditionalReports, SurveyCompleted, UniqueReportRequests, Time_Stamp FROM ProviderValueCard" 
    InsertCommand="INSERT INTO [ProviderValueCard] ([ProviderID], [AdditionalReports], [UniqueReportRequests], [SurveyCompleted]) VALUES (@ProviderID, @AdditionalReports, @UniqueReportRequests, @SurveyCompleted)"> 
    <InsertParameters> 
     <asp:Parameter Name="ProviderID" /> 
     <asp:Parameter Name="AdditionalReports" /> 
     <asp:Parameter Name="UniqueReportRequests" /> 
     <asp:Parameter Name="SurveyCompleted" /> 
    </InsertParameters> 
</asp:SqlDataSource> 
+0

您的SQL数据源没有Time_Stamp组件。 – 2014-08-28 14:24:16

+0

它需要自动插入。我是否将它包含在列中?当然,我不需要将它包含在VALUES之后,因为它不需要手动插入? – user3749447 2014-08-28 14:27:10

+0

我会让数据库做到这一点。但是,如果用户在插入之前需要查看它,请将其添加为DataSource中的插入参数 – 2014-08-28 14:29:34

回答

1

你可以设置你的TIME_STAMP列有默认约束,将自动设置为当前日期和时间插入新行:

ALTER TABLE dbo.ProviderValueCard 
ADD CONSTRAINT DF_ProviderValueCard_Time_Stamp 
    DEFAULT (SYSDATETIME()) FOR TIME_STAMP 

现在,每当插入一行并且没有从前端提供值时, SQL Server会自动将当前日期&填入TIME_STAMP :-)

+0

太棒了!谢谢! – user3749447 2014-08-28 14:32:55