Параметры SqlDataSource равны нулю при вставке / обновлении - PullRequest
0 голосов
/ 03 августа 2011

У меня есть SqlDataSource, прикрепленный к FormView, который используется для вставки / обновления, который раньше работал идеально - но теперь внезапно ни один из параметров не вставляется в строку (строка все еще создается с ошибкой,но все поля, кроме ID, являются нулевыми).Я дважды проверил, чтобы убедиться, что все правильные текстовые поля привязаны к имени столбца, и они.

Мне просто интересно, какие проблемы могут вызвать это, потому что я в тупике.Я добавил метод DataBound формы, чтобы убедиться, что форма не восстанавливается при обратной передаче, и это не так.Я также проверил метод Inserting, и все параметры там нулевые.

РЕДАКТИРОВАТЬ: Вот разметка источника данных:

<asp:SqlDataSource runat='server' ID='dsOrders' ConnectionString="<%$ ConnectionStrings:WebConnectionString %>"
                    SelectCommand="SELECT Orders.ID, Orders.Created, Orders.ReportingCat, Orders.OrderType, Orders.Customer, Orders.Reference, Orders.RequiredDate, Contacts.ContactName AS 'ContactName', ISNULL(Orders.Collection, 0) AS 'Collection', Orders.DirectToSite, Orders.OnSite, Orders.DelAdd1, Orders.DelAdd2, Orders.DelAdd3, Orders.DelTown, Orders.DelCounty, Orders.DelPostCode, Orders.Carriage, Orders.CarriageAmount, Orders.CarriageOverrideNote, Orders.SalesPerson, Orders.Offload, Orders.DelTimeBegin, Orders.DelTimeEnd, Orders.DeliveryInstruction, Orders.SpecialInstruction, Orders.AccountsNote, Orders.Status, SalesPeople.FirstName + ' ' + CASE WHEN SalesPeople.Surname IS NULL THEN '' ELSE SalesPeople.Surname END AS SalesName, ISNULL(Orders.ContactID, '') AS ContactID, Orders.OrderNumber, Orders.QuoteNumber, Orders.CustomerOrderLink, ISNULL(Orders.ProjectDetails, 0) AS 'ProjectDetails', Orders.SalesPersonContact, Orders.DeliveryCharge, Orders.SiteName, Orders.MainContractor, Orders.Address, Orders.Town, Orders.County, Orders.Postcode FROM Orders LEFT OUTER JOIN SalesPeople ON Orders.SalesPerson = SalesPeople.ID LEFT OUTER JOIN Contacts ON Orders.ContactID = Contacts.ContactID WHERE (Orders.ID = @Order ) OR ( @Order IS NULL)"
                    InsertCommand="INSERT INTO Orders(Customer, Collection, SalesPerson, Offload, Status, ContactID, OrderNumber, QuoteNumber, ProjectDetails, SalesPersonContact, DeliveryCharge) VALUES (@Customer, @Collection, @SalesPerson, @Offload, 1, @ContactID, @OrderNumber, @QuoteNumber, @ProjectDetails, @SalesPersonContact, @DeliveryCharge); SET @ReturnID = SCOPE_IDENTITY();"
                    OnInserted="dsOrders_Inserted" OnInserting="dsOrders_Inserting" UpdateCommand="UPDATE Orders SET Customer = @Customer, Collection = @Collection, SalesPerson = @SalesPerson, Offload = @Offload, ContactID = @ContactID, OrderNumber = @OrderNumber, QuoteNumber = @QuoteNumber, ProjectDetails = @ProjectDetails, SalesPersonContact = @SalesPersonContact, DeliveryCharge = @DeliveryCharge WHERE (ID = @ID)">
                    <UpdateParameters>
                        <asp:Parameter Name="Customer" Type="String" />
                        <asp:Parameter Name="Collection" Type="Boolean" />
                        <asp:Parameter Name="SalesPerson" Type="Int32" />
                        <asp:Parameter Name="Offload" Type="Boolean" />
                        <asp:Parameter Name="ContactID" Type="Int64" />
                        <asp:Parameter Name="OrderNumber" Type="Int64" />
                        <asp:Parameter Name="QuoteNumber" Type="String" />
                        <asp:Parameter Name="ProjectDetails" Type="Boolean" />
                        <asp:Parameter Name="SalesPersonContact" Type="Int64" />
                        <asp:Parameter Name="DeliveryCharge" Type="Int32" />
                        <asp:SessionParameter Name="ID" SessionField="OrderID" Type="Int64" />  
                    </UpdateParameters>
                    <InsertParameters>
 <asp:Parameter Name="Customer" Type="String" />
                        <asp:Parameter Name="Collection" Type="Boolean" />
                        <asp:Parameter Name="SalesPerson" Type="Int32" />
                        <asp:Parameter Name="Offload" Type="Boolean" />
                        <asp:Parameter Name="ContactID" Type="Int64" />
                        <asp:Parameter Name="OrderNumber" Type="Int64" />
                        <asp:Parameter Name="QuoteNumber" Type="String" />
                        <asp:Parameter Name="ProjectDetails" Type="Boolean" />
                        <asp:Parameter Name="SalesPersonContact" Type="Int64" />
                        <asp:Parameter Name="DeliveryCharge" Type="Int32" />
                        <asp:Parameter Name="ReturnID" Direction="Output" Type="Int64" />
                    </InsertParameters>
                    <SelectParameters>
                        <asp:SessionParameter DefaultValue="null" Name="Order" SessionField="OrderID" />
                    </SelectParameters>
                </asp:SqlDataSource>

1 Ответ

0 голосов
/ 03 августа 2011

В вашей команде INSERT я не вижу ID:

INSERT INTO Orders(Customer, Collection, SalesPerson, Offload, Status, ContactID,
OrderNumber, QuoteNumber, ProjectDetails, SalesPersonContact, DeliveryCharge) VALUES
(@Customer, @Collection, @SalesPerson, @Offload, 1, @ContactID, @OrderNumber, @QuoteNumber, 
@ProjectDetails, @SalesPersonContact, @DeliveryCharge);
...