C# C:没有为FormView的一个或多个必需参数提供值

C# C:没有为FormView的一个或多个必需参数提供值,c#,asp.net,C#,Asp.net,我使用的是FormView,当我想更新我编辑过的内容时,总是会出现以下错误: 没有为一个或多个给定值 所需参数 我将SQLDataSource与FormView结合使用 这是我的formview的代码 <asp:SqlDataSource ID="sqldsLokaalPrinters" runat="server" ConnectionString="<%$ ConnectionStrings:connRand2 %>" DeleteCom

我使用的是FormView,当我想更新我编辑过的内容时,总是会出现以下错误:

没有为一个或多个给定值 所需参数

我将SQLDataSource与FormView结合使用

这是我的formview的代码

<asp:SqlDataSource ID="sqldsLokaalPrinters" runat="server" 
        ConnectionString="<%$ ConnectionStrings:connRand2 %>" 
        DeleteCommand="DELETE FROM [tblComputers] WHERE (([tblArtveldenr] = ?) OR ([tblArtveldenr] IS NULL AND ? IS NULL))" 
        InsertCommand="INSERT INTO [tblComputers] ([tblArtveldenr], [tblNaam], [tblCLokaal_id], [tblPositie], [tblSerienr], [tblTCPIP], [tblFabrikant], [tblModel], [tblProcessor], [tblSnelheid], [tblKleur], [tblGeheugen], [tblHarddisk], [tblZip], [tblCD], [tblDVD], [tblNetwerk], [tblFirewire], [tblAanschafdatum], [tblCLeverabcierNr], [tblScherm], [tblLaptop]) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" 
        ProviderName="<%$ ConnectionStrings:connRand2.ProviderName %>" 
        SelectCommand="SELECT * FROM [tblComputers] WHERE ([tblCLokaal_id] = ?)" 
        UpdateCommand="UPDATE [tblComputers] SET [tblNaam] = ?, [tblCLokaal_id] = ?, [tblPositie] = ?, [tblSerienr] = ?, [tblTCPIP] = ?, [tblFabrikant] = ?, [tblModel] = ?, [tblProcessor] = ?, [tblSnelheid] = ?, [tblKleur] = ?, [tblGeheugen] = ?, [tblHarddisk] = ?, [tblZip] = ?, [tblCD] = ?, [tblDVD] = ?, [tblNetwerk] = ?, [tblFirewire] = ?, [tblAanschafdatum] = ?, [tblCLeverabcierNr] = ?, [tblScherm] = ?, [tblLaptop] = ? WHERE (([tblArtveldenr] = ?) OR ([tblArtveldenr] IS NULL AND ? IS NULL))">
        <SelectParameters>
            <asp:SessionParameter Name="tblCLokaal_id" SessionField="lokaalID" 
                Type="Int16" />
        </SelectParameters>
        <DeleteParameters>
            <asp:Parameter Name="tblArtveldenr" Type="String" />
        </DeleteParameters>
        <UpdateParameters>
            <asp:Parameter Name="tblNaam" Type="String" />
            <asp:Parameter Name="tblCLokaal_id" Type="Int16" />
            <asp:Parameter Name="tblPositie" Type="Int32" />
            <asp:Parameter Name="tblSerienr" Type="String" />
            <asp:Parameter Name="tblTCPIP" Type="String" />
            <asp:Parameter Name="tblFabrikant" Type="String" />
            <asp:Parameter Name="tblModel" Type="String" />
            <asp:Parameter Name="tblProcessor" Type="String" />
            <asp:Parameter Name="tblSnelheid" Type="Int32" />
            <asp:Parameter Name="tblKleur" Type="String" />
            <asp:Parameter Name="tblGeheugen" Type="Int32" />
            <asp:Parameter Name="tblHarddisk" Type="Double" />
            <asp:Parameter Name="tblZip" Type="String" />
            <asp:Parameter Name="tblCD" Type="String" />
            <asp:Parameter Name="tblDVD" Type="String" />
            <asp:Parameter Name="tblNetwerk" Type="String" />
            <asp:Parameter Name="tblFirewire" Type="Int32" />
            <asp:Parameter Name="tblAanschafdatum" Type="DateTime" />
            <asp:Parameter Name="tblCLeverabcierNr" Type="Int32" />
            <asp:Parameter Name="tblScherm" Type="String" />
            <asp:Parameter Name="tblLaptop" Type="Boolean" />
            <asp:Parameter Name="tblArtveldenr" Type="String" />
        </UpdateParameters>
        <InsertParameters>
            <asp:Parameter Name="tblArtveldenr" Type="String" />
            <asp:Parameter Name="tblNaam" Type="String" />
            <asp:Parameter Name="tblCLokaal_id" Type="Int16" />
            <asp:Parameter Name="tblPositie" Type="Int32" />
            <asp:Parameter Name="tblSerienr" Type="String" />
            <asp:Parameter Name="tblTCPIP" Type="String" />
            <asp:Parameter Name="tblFabrikant" Type="String" />
            <asp:Parameter Name="tblModel" Type="String" />
            <asp:Parameter Name="tblProcessor" Type="String" />
            <asp:Parameter Name="tblSnelheid" Type="Int32" />
            <asp:Parameter Name="tblKleur" Type="String" />
            <asp:Parameter Name="tblGeheugen" Type="Int32" />
            <asp:Parameter Name="tblHarddisk" Type="Double" />
            <asp:Parameter Name="tblZip" Type="String" />
            <asp:Parameter Name="tblCD" Type="String" />
            <asp:Parameter Name="tblDVD" Type="String" />
            <asp:Parameter Name="tblNetwerk" Type="String" />
            <asp:Parameter Name="tblFirewire" Type="Int32" />
            <asp:Parameter Name="tblAanschafdatum" Type="DateTime" />
            <asp:Parameter Name="tblCLeverabcierNr" Type="Int32" />
            <asp:Parameter Name="tblScherm" Type="String" />
            <asp:Parameter Name="tblLaptop" Type="Boolean" />
        </InsertParameters>
    </asp:SqlDataSource>
我不知道如何解决这个错误


非常感谢Vincent

这个?是错误的,它的格式应该是@paramname

因此,为了您的选择

SelectCommand="SELECT * FROM [tblComputers] WHERE ([tblCLokaal_id] = @tblCLokaal_id)" 
刚才注意到,如果param是在Session[id]中传递的,那么它应该是

        <SelectParameters>
            <asp:SessionParameter Name="tblCLokaal_id" SessionField="id" 
                Type="Int16" />
        </SelectParameters>
编辑


看看MSDN?可能不是我用过的,但是SessionField肯定需要是会话中对象的键

谢谢你的回答,但不幸的是它仍然不起作用。
SelectCommand="SELECT * FROM [tblComputers] WHERE ([tblCLokaal_id] = @tblCLokaal_id)" 
        <SelectParameters>
            <asp:SessionParameter Name="tblCLokaal_id" SessionField="id" 
                Type="Int16" />
        </SelectParameters>