Ich vermute, dies ist mehr als wahrscheinlich aufgrund falsch formatierter SQL, aber ich habe eine GridView in ASP.NET-Webformular mit einer SQL-DataSource verbunden. Wenn ich auf die Schaltfläche "Befehl bearbeiten" klicke, ändert sich der Wert in "Vorlage bearbeiten". Wenn ich jedoch auf die Schaltfläche Aktualisieren klicke, werden die Änderungen in alle Zeilen geschrieben, nicht nur in die Zeile, auf die die Schaltfläche geklickt wurde. Die Seite enthält eine Dropdown-Liste mit Mitarbeitern, und sobald ein Mitarbeiter ausgewählt ist, wird die GridView mit den aktuellen Aufgaben dieses Mitarbeiters ausgefüllt.Update-Befehl in GridVew alle Datensätze aktualisieren
ASPX
<asp:DropDownList ID="ddlEmployee" runat="server" AutoPostBack="True" DataSourceID="ddlEmployeeSQL" DataTextField="Name" DataValueField="EmployeeID">
</asp:DropDownList>
<asp:GridView ID="gvTaskDashboard" runat="server" AutoGenerateColumns="False" DataSourceID="TaskDashboardSQL">
<Columns>
<asp:CommandField HeaderText="Edit" ShowEditButton="true" />
<asp:TemplateField HeaderText="Project #" SortExpression="ProjectID">
<EditItemTemplate>
<asp:Label ID="lblProjectID" runat="server" Text='<%# Bind("ProjectID") %>'></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("ProjectID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Project Name" SortExpression="ProjectName">
<EditItemTemplate>
<asp:Label ID="lblProjectName" runat="server" Text='<%# Bind("ProjectName") %>'></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label10" runat="server" Text='<%# Bind("ProjectName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Release #" SortExpression="ReleaseID">
<EditItemTemplate>
<asp:Label ID="lblReleaseID" runat="server" Text='<%# Bind("ReleaseID") %>'></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("ReleaseID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Task Code" SortExpression="TaskCodeAbbr">
<EditItemTemplate>
<asp:Label ID="lblTaskCode" runat="server" Text='<%# Bind("TaskCodeAbbr") %>'></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label11" runat="server" Text='<%# Bind("TaskCodeAbbr") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Status" SortExpression="TaskStatusID">
<EditItemTemplate>
<asp:DropDownList ID="ddlStatus" runat="server" AutoPostBack="True" DataSourceID="ddlStatusSQL"
DataTextField="TaskStatusName" DataValueField="TaskStatusID" SelectedValue='<%# Bind("TaskStatusID") %>'>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataSourceID="ddlStatusSQL" enabled="false"
DataTextField="TaskStatusName" DataValueField="TaskStatusID" SelectedValue='<%# Bind("TaskStatusID") %>'>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Priority" SortExpression="TaskPriorityID">
<EditItemTemplate>
<asp:DropDownList ID="ddlPriority" runat="server" AutoPostBack="True" DataSourceID="ddlPrioritySQL"
DataTextField="TaskPriorityName" DataValueField="TaskPriorityID" SelectedValue='<%# Bind("TaskPriorityID") %>'>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:DropDownList ID="DropDownList3" runat="server" AutoPostBack="True" DataSourceID="ddlPrioritySQL" enabled="false"
DataTextField="TaskPriorityName" DataValueField="TaskPriorityID" SelectedValue='<%# Bind("TaskPriorityID") %>'>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Due Date" SortExpression="DueDate">
<EditItemTemplate>
<asp:TextBox ID="txtDueDate" runat="server" Text='<%# Bind("DueDate", "{0:MM/dd/yyyy}") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label5" runat="server" Text='<%# Bind("DueDate", "{0:MM/dd/yyyy}") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Notes" SortExpression="Notes">
<EditItemTemplate>
<asp:TextBox ID="txtNotes" runat="server" Text='<%# Bind("Notes") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label6" runat="server" Text='<%# Bind("Notes") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Date Complete" SortExpression="CompDate">
<EditItemTemplate>
<asp:TextBox ID="txtCompDate" runat="server" Text='<%# Bind("CompDate", "{0:MM/dd/yyyy}") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label7" runat="server" Text='<%# Bind("CompDate", "{0:MM/dd/yyyy}") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
SQL Datasource
<asp:SqlDataSource ID="ddlEmployeeSQL" runat="server" ConnectionString="<%$ ConnectionStrings:ProWorxConnectionString %>"
SelectCommand="SELECT [EmployeeID], [Name] FROM [tblEmployee] WHERE ([Status] = 'A') ORDER BY [Name]">
</asp:SqlDataSource>
<asp:SqlDataSource ID="TaskDashboardSQL" runat="server" ConnectionString="<%$ ConnectionStrings:ProWorxConnectionString %>"
SelectCommand="SELECT tt.TaskID
, tt.EmployeeID
, tt.ProjectID
, tt.ReleaseID
, tt.TaskStatusID
, tt.TaskPriorityID
, tt.DueDate
, tt.Notes
, tt.CompDate
, p.ProjectName
, tc.TaskCodeAbbr
FROM tblTaskTracker tt INNER JOIN
tblProject p ON tt.ProjectID = p.ProjectID INNER JOIN
tblTaskCode tc ON tt.TaskCodeID = tc.TaskCodeID INNER JOIN
tblTaskStatus ts on tt.TaskStatusID = ts.TaskStatusID
WHERE (tt.EmployeeID = @EmployeeID)
ORDER BY ts.TaskStatusType, tt.TaskPriorityID, tt.DueDate"
InsertCommand="INSERT INTO [tblTaskTracker]
([EmployeeID], [ProjectID], [ReleaseID], [TaskCodeID], [TaskStatusID], [TaskPriorityID], [DueDate], [Notes], [CompDate])
VALUES (@EmployeeID, @ProjectID, @ReleaseID, @TaskCodeID, @TaskStatusID, @TaskPriorityID, @DueDate, @Notes, @CompDate)"
UpdateCommand="UPDATE [tblTaskTracker] SET [TaskStatusID] = @TaskStatusID, [TaskPriorityID] = @TaskPriorityID,
[DueDate] = @DueDate, [Notes] = @Notes, [CompDate] = @CompDate"
DeleteCommand="DELETE FROM [tblTaskTracker] WHERE [TaskID] = @TaskID">
<SelectParameters>
<asp:ControlParameter ControlID="ddlEmployee" Name="EmployeeID" PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
<InsertParameters>
<asp:Parameter Name="EmployeeID" Type="Int32" />
<asp:Parameter Name="ProjectID" Type="Int32" />
<asp:Parameter Name="ReleaseID" Type="Int32" />
<asp:Parameter Name="TaskCodeID" Type="Int32" />
<asp:Parameter Name="TaskStatusID" Type="Int32" />
<asp:Parameter Name="TaskPriorityID" Type="Int32" />
<asp:Parameter Name="DueDate" Type="DateTime" />
<asp:Parameter Name="Notes" Type="String" />
<asp:Parameter Name="CompDate" Type="DateTime" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="TaskStatusID" Type="Int32" />
<asp:Parameter Name="TaskPriorityID" Type="Int32" />
<asp:Parameter Name="DueDate" Type="DateTime" />
<asp:Parameter Name="Notes" Type="String" />
<asp:Parameter Name="CompDate" Type="DateTime" />
</UpdateParameters>
<DeleteParameters>
<asp:Parameter Name="TaskID" Type="Int32" />
</DeleteParameters>
</asp:SqlDataSource>
/FACEPALM Ok, Wald durch die Bäume und all das. Angenommen, es sollte etwa so aussehen: 'UpdateCommand =" UPDATE [tblTaskTracker] SET [TaskStatusID] = @TaskStatusID, [TaskPriorityID] = @TaskPriorityID, [DueDate] = @DueDate, [Notizen] = @Notes, [CompDate] = @CompDate WHERE [TaskID] = @TaskID "' wie definiere ich den Parameter als TaskID der ausgewählten Zeile? Wenn ich es einfach als ' ' nichts aktualisiert, da ich davon ausgehe, dass es versucht, eine Null TaskID zu aktualisieren. –
Vergesst nicht. Ich habe es herausgefunden. Ich habe ein neues Template-Feld für die Task-ID erstellt und Visible auf False gesetzt. –