我一直在试图找出什么是错误的下面的GridView几个小时无济于事,所以我想我会寻求一些帮助。只有一部分GridView行更新
我有一个ASP GridView控件,它从数据库中检索电影会话的详细信息,并允许编辑它们。
除了当我尝试更新一行时,一切正常。当我更新一行时,只有数据库中的cinemaNo字段更新以及其他两个字段要更新(日期为&时间),用NULL覆盖存储在数据库中这些字段中的任何内容,而不会引发任何错误消息。
当我将@date和@time UpdateParameters的DefaultValue手动设置为有效的日期/时间时,行更新完美地工作,但是当我在GridView中输入日期/时间并使用Update按钮。我怀疑这个问题可能与绑定有关?
这里是我的代码:
<asp:SqlDataSource ID="srcSessionList" runat="server" ConnectionString="<%$ ConnectionStrings:database %>" EnableCaching="True" CacheDuration="20" FilterExpression="movieID = '{0}'"
SelectCommand="SELECT s.dateAndTime, m.title, s.cinemaNo, m.movieID, s.sessionID
FROM Session s
INNER JOIN Movie m ON (s.movieID=m.movieID)
INNER JOIN Theatre t ON (s.theatreID=t.theatreID)
WHERE s.theatreID=(SELECT ts.theatreID FROM TheatreAndStaff ts INNER JOIN Staff s ON (ts.staffID=s.staffID) INNER JOIN Theatre t ON (ts.theatreID=t.theatreID) WHERE [email protected])
ORDER BY s.dateAndTime ASC"
UpdateCommand="UPDATE Session SET dateAndTime=CONVERT(datetime2, @date + ' ' + @time, 103), [email protected] WHERE [email protected]">
<SelectParameters>
<asp:Parameter Name="user" Type="String" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="sessionID" Type="Int32"/>
<asp:Parameter Name="cinemaNo" Type="Int32"/>
<asp:Parameter Name="date" Type="String" />
<asp:Parameter Name="time" Type="String" />
</UpdateParameters>
<FilterParameters>
<asp:ControlParameter ControlID="ddlMovieList" PropertyName="SelectedValue" />
</FilterParameters>
</asp:SqlDataSource>
...
<asp:UpdatePanel ID="UpdatePanel" runat="server">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" DataSourceID="srcSessionList" AutoGenerateColumns="False" ClientIDMode="Static" DataKeyNames="sessionID">
<Columns>
<asp:CommandField ShowEditButton="True" ShowDeleteButton="True" />
<asp:BoundField DataField="dateAndTime" HeaderText="Time" DataFormatString="{0:t}" ApplyFormatInEditMode="True" />
<asp:BoundField DataField="dateAndTime" HeaderText="Date" DataFormatString="{0:dd/MM/yyyy}" ApplyFormatInEditMode="True" />
<asp:BoundField DataField="title" HeaderText="Title" ReadOnly="True" />
<asp:TemplateField HeaderText="Cinema">
<EditItemTemplate>
<asp:DropDownList ID="ddlCinemaList" runat="server" DataSourceID="srcCinemaList" DataTextField="cinemaNo" DataValueField="cinemaNo" SelectedValue='<%# Bind("cinemaNo") %>' ></asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("cinemaNo") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>No matching sessions.<br /></EmptyDataTemplate>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
编辑:我进入日期DD/MM/YYYY
输入日期为DD/MM/YYYY。 – tneb