Update in gridview voor 3 'joined' tabellen met gebruik van dropdownlists

Status
Niet open voor verdere reacties.

Speedy7912

Gebruiker
Lid geworden
4 dec 2009
Berichten
65
Ik heb een gridview gevult met een query welke 2 tabellen (medewerkers en projecten) koppelt aan een 3e tabel (gewerkte uren).

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

In de gridview worden deze gegevens weergegeven.
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:

Code:
<EditItemTemplate>
 <asp:DropDownList ID="ddlUpdateMdwID" runat="server" AutoPostBack="True" 
   DataSourceID="SDSMedewerkers" DataTextField="mdwNr" DataValueField="MdwID" 
   SelectedValue='<%# Bind("MwdID") %>'>
 </asp:DropDownList>
</EditItemTemplate>

voor het Update Command hen ik het volgende
Code:
UPDATE Uren SET ProjectID = @ProjectID, MwdID = @MdwID,
Uren = @Uren, Minuten = @Minuten, Date = @Date

Helaas krijg ik de foutmelding:

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.

Dit terwijl volgens mij de value: ProjectID gewoon uit dezelfde regel zou moeten komen. Wat doe ik verkeerd of waar gaat mijn denkwijze mis.

Ik hoop dat iemand mij kan helpen.
 
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>
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan