Ik heb een gridview gevult met een query welke 2 tabellen (medewerkers en projecten) koppelt aan een 3e tabel (gewerkte uren).
In de gridview worden deze gegevens weergegeven.Code:SELECT Uren.ProjectID, Uren.MwdID, MDW.mdwNr, MDW.mdwFirstName, MDW.mdwLastName, Projecten.ProjectNr, Projecten.ProjectNaam, Uren.Uren, Uren.Minuten, Uren.Date FROM Uren INNER JOIN Projecten ON Uren.ProjectID = Projecten.ProjectID INNER JOIN MDW ON Uren.MwdID = MDW.MdwID
Nu wil ik middels een DropDownList bijv. het ProjectNr wijzigen. Als ik deze wijzig moet uiteraard de projectnaam mee wijzigen.
Ik heb hiervoor de editItemTemplate voor de MdwID kolom aangepast:
voor het Update Command hen ik het volgendeCode:<EditItemTemplate> <asp:DropDownList ID="ddlUpdateMdwID" runat="server" AutoPostBack="True" DataSourceID="SDSMedewerkers" DataTextField="mdwNr" DataValueField="MdwID" SelectedValue='<%# Bind("MwdID") %>'> </asp:DropDownList> </EditItemTemplate>
Helaas krijg ik de foutmelding:Code:UPDATE Uren SET ProjectID = @ProjectID, MwdID = @MdwID, Uren = @Uren, Minuten = @Minuten, Date = @Date
Dit terwijl volgens mij de value: ProjectID gewoon uit dezelfde regel zou moeten komen. Wat doe ik verkeerd of waar gaat mijn denkwijze mis.Code:Cannot insert the value NULL into column 'ProjectID', table 'D:\WEBSITES\X\APP_DATA\DATABASE.MDF.dbo.Uren'; column does not allow nulls. UPDATE fails. The statement has been terminated.
Ik hoop dat iemand mij kan helpen.
Zou je de select en update parameters er ook bij willen zetten?
Kind regards,
Matthijs Koopman
Mathijs,
kun je aangeven waar je naartoe wilt. De parameters zijn gegenereerd door VS2010. Ik ben er vanuit gegaan (sorry ik ben redelijk nieuw met asp) dat VS2010 uit de invulling van deze variabelen afhandeld. Ik kan ongetwijfeld zelf ingrijpen in de 'update' functie welke de grid zelf genereerd. Ik heb alleen de kennis volgens mij nog niet dit voor elkaar te krijgen. (al ben ik druk aan het lezen)
Een klankbord voor mijn problemen is dan ook altijd welkom net als praktische informatie. Technische kennis is fijn, inzichten in hoe je dit zou kunnen doen ook, maar ervaring leert dat verschillende mensen verschillende inzichten hebben in praktische oplossingen ook als zij dezelfde kennis hebben
hier de code welke VS gegenereerd heeft. Ik vul overigens de database via een aantal textboxes met wel een stuk eigen code.
Code:<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" DataSourceID="SDSUren" EnableModelValidation="True" ForeColor="#333333" GridLines="None" AllowPaging="True" AllowSorting="True"> <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> <Columns> <asp:BoundField DataField="MwdID" HeaderText="MwdID" SortExpression="MwdID" /> <asp:TemplateField HeaderText="mdwNr" SortExpression="mdwNr"> <EditItemTemplate> <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataSourceID="SDSMedewerkers" DataTextField="Medewerker" DataValueField="MdwID"> </asp:DropDownList> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Bind("mdwNr") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="mdwFirstName" HeaderText="mdwFirstName" SortExpression="mdwFirstName" /> <asp:BoundField DataField="mdwLastName" HeaderText="mdwLastName" SortExpression="mdwLastName" /> <asp:BoundField DataField="ProjectID" HeaderText="ProjectID" SortExpression="ProjectID" /> <asp:BoundField DataField="ProjectNr" HeaderText="ProjectNr" SortExpression="ProjectNr" /> <asp:BoundField DataField="ProjectNaam" HeaderText="ProjectNaam" SortExpression="ProjectNaam" /> <asp:BoundField DataField="Uren" HeaderText="Uren" SortExpression="Uren" /> <asp:BoundField DataField="Minuten" HeaderText="Minuten" SortExpression="Minuten" /> <asp:BoundField DataField="Date" HeaderText="Date" SortExpression="Date" /> <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" /> </Columns> <EditRowStyle BackColor="#999999" /> <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> </asp:GridView> <asp:SqlDataSource ID="SDSUren" runat="server" ConnectionString="<%$ ConnectionStrings:DataBaseFile %>" DeleteCommand="DELETE FROM Uren WHERE (UrenID = @UrenID)" InsertCommand="INSERT INTO Uren(ProjectID, MwdID, Uren, Minuten, Date) VALUES (@ProjectID, @MdwID, @Uren, @Minuten, @Date)" SelectCommand="SELECT Uren.ProjectID, Uren.MwdID, MDW.mdwNr, MDW.mdwFirstName, MDW.mdwLastName, Projecten.ProjectNr, Projecten.ProjectNaam, Uren.Uren, Uren.Minuten, Uren.Date FROM Uren INNER JOIN Projecten ON Uren.ProjectID = Projecten.ProjectID INNER JOIN MDW ON Uren.MwdID = MDW.MdwID" UpdateCommand="UPDATE Uren SET ProjectID = @ProjectID, MwdID = @MdwID, Uren = @Uren, Minuten = @Minuten, Date = @Date"> <DeleteParameters> <asp:Parameter Name="UrenID" /> </DeleteParameters> <InsertParameters> <asp:Parameter Name="ProjectID" /> <asp:Parameter Name="MdwID" /> <asp:Parameter Name="Uren" /> <asp:Parameter Name="Minuten" /> <asp:Parameter Name="Date" /> </InsertParameters> <UpdateParameters> <asp:Parameter Name="ProjectID" /> <asp:Parameter Name="MdwID" /> <asp:Parameter Name="Uren" /> <asp:Parameter Name="Minuten" /> <asp:Parameter Name="Date" /> </UpdateParameters> </asp:SqlDataSource>