Я извлекаю данные нескольких таблиц из SQL Server в элемент управления GridView.Я могу показывать столбцы из разных таблиц в GridView, и я хотел бы сделать его редактируемым для пользователей.Но у меня небольшая проблема с этим.
Правка ссылки в Gridview работает нормально, я могу вносить изменения в каждый столбец.Но сделанные мной изменения не обновляются , когда я нажимаю ссылку Обновить.Итак, это мой HTML-код элемента управления GridView , как показано ниже:
<asp:GridView ID="GridView1" runat="server" CssClass="auto-style36" AllowPaging="True" AutoGenerateColumns="False" BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px" CellPadding="3" CellSpacing="2" DataSourceID="SqlDataSource1">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="Atd_ID" HeaderText="Atd_ID" SortExpression="Atd_ID" InsertVisible="False" ReadOnly="True" />
<asp:BoundField DataField="Atd_Date" HeaderText="Atd_Date" SortExpression="Atd_Date" />
<asp:BoundField DataField="Atd_InTime" HeaderText="Atd_InTime" SortExpression="Atd_InTime" />
<asp:BoundField DataField="Atd_OutTime" HeaderText="Atd_OutTime" SortExpression="Atd_OutTime" />
<asp:BoundField DataField="Atd_Comment" HeaderText="Atd_Comment" SortExpression="Atd_Comment" />
<asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" />
<asp:BoundField DataField="SID" HeaderText="SID" SortExpression="SID" />
<asp:BoundField DataField="S_FName" HeaderText="S_FName" SortExpression="S_FName" />
<asp:BoundField DataField="S_LName" HeaderText="S_LName" SortExpression="S_LName" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:SAOS1ConnectionString %>" SelectCommand="SELECT attendance.Atd_ID,attendance.Atd_Date, attendance.Atd_InTime, attendance.Atd_OutTime, attendance.Atd_Comment, attendance.Status, student.SID, student.S_FName, student.S_LName FROM student LEFT OUTER JOIN attendance ON student.SID = attendance.SID AND attendance.Atd_Date = @Atd_Date LEFT OUTER JOIN class ON student.CID = class.CID WHERE (class.CID = @CID)" UpdateCommand="updatetable5" UpdateCommandType="StoredProcedure">
<SelectParameters>
<asp:ControlParameter ControlID="datepicker" Name="Atd_Date" PropertyName="Text" />
<asp:ControlParameter ControlID="LabelClassID" Name="CID" PropertyName="Text" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="Atd_ID" Type="Int32" />
<asp:Parameter DbType="Date" Name="Atd_Date" />
<asp:Parameter DbType="Time" Name="Atd_InTime" />
<asp:Parameter DbType="Time" Name="Atd_OutTime" />
<asp:Parameter Name="Atd_Comment" Type="String" />
<asp:Parameter Name="Status" Type="String" />
<asp:Parameter Name="SID" Type="Int32" />
<asp:Parameter Name="S_FName" Type="String" />
<asp:Parameter Name="S_LName" Type="String" />
</UpdateParameters>
</asp:SqlDataSource>
И это моя хранимая процедура для обновления таблицы attendance
& student
, яПоверьте, проблема начинается здесь.
USE [SAOS1]
GO
CREATE PROCEDURE [dbo].[updatetable2]
(
@Atd_ID int,
@Atd_Date date,
@Atd_InTime time(7),
@Atd_OutTime time(7),
@Atd_Comment varchar(50),
@Status varchar(50),
@SID int,
@S_FName varchar(50),
@S_LName varchar(50)
)
AS
BEGIN
UPDATE attendance SET Atd_Date=@Atd_Date, Atd_InTime=@Atd_InTime, Atd_OutTime=@Atd_OutTime, Atd_Comment=@Atd_Comment, Status=@Status WHERE Atd_ID=@Atd_ID
UPDATE student SET S_FName=@S_FName, S_LName=@S_LName WHERE SID=@SID
END
WHERE CLAUSE в строке ниже, которая является Atd_ID=@Atd_ID
, является автоматически генерируемыми ключами .Это причина того, что я не могу обновить свои изменения в элементе управления GridView?Я несколько раз пытался изменить предложение WHERE, gridview позволяет мне вносить изменения, хотя результат не тот, который я хочу.
UPDATE attendance SET Atd_Date=@Atd_Date, Atd_InTime=@Atd_InTime, Atd_OutTime=@Atd_OutTime, Atd_Comment=@Atd_Comment, Status=@Status where Atd_ID=@Atd_ID