【发布时间】:2018-06-21 01:53:05
【问题描述】:
我很确定我知道为什么会出现错误,只是不知道如何修复它。在 FormView ItemTemplate 中,我有一个用于绑定到 FormView 的 SQLDatasource 的项目 ID# 的标签控件。我还有一个 DropDownList,我将它的 SQLDatasource 作为 ControlParameter 绑定到 Label.Text。我猜是因为 Label 控件尚未绑定,这导致我的 DDL 踢出该错误。
ASPX
<asp:FormView ID="FvChangeOrder" runat="server" DataKeyNames="ProjectChangeOrderID"
DataSourceID="FvChangeOrderSQL" OnItemCommand="FvChangeOrder_OnItemCommand"
OnDataBound="FvChangeOrder_OnDataBound">
<ItemTemplate>
<div>Project #: </div>
<div>
<asp:Label ID="LblProjectID" runat="server" Text='<%# Bind("ProjectID") %>' /></div>
<div>Shipment #: </div>
<div>
<asp:DropDownList runat="server" ID="DdlShipment" DataSourceID="DdlShipmentSQL"
SelectedValue='<%# Bind("ProjectShipmentID") %>' DataValueField="ProjectShipmentID"
DataTextField="ShipmentNo" Enabled="False" />
</div>
...
</ItemTemplate>
</asp:FormView>
<asp:SqlDataSource ID="FvChangeOrderSQL" runat="server"
ConnectionString="<%$ ConnectionStrings:ProjectLogicTestConnectionString %>"
SelectCommand="SELECT [ProjectID], [ProjectChangeOrderID], [ProjectShipmentID], [SeqNo],
[Date], [EnteredBy_UserID], [Source], [Initiator], [Reason], [ReasonNotes],
[ApprovalCode], [Description], [NumPanels], [Amount], [IsCommissionable], [DateDue],
[DateRecd], [Status]
FROM [tblProjectChangeOrder] WHERE ([ProjectChangeOrderID] = @PCOID)">
<SelectParameters>
<asp:QueryStringParameter Name="PCOID" QueryStringField="PCOID" Type="Int32"/>
</SelectParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="DdlShipmentSQL" runat="server"
ConnectionString="<%$ ConnectionStrings:ProjectLogicTestConnectionString %>"
SelectCommand="SELECT pco.ProjectShipmentID, ps.ShipmentNo FROM tblProjectChangeOrder pco
LEFT JOIN tblProjectShipment ps ON pco.ProjectShipmentID = ps.ProjectShipmentID
WHERE pco.ProjectID = @ProjectID">
<SelectParameters>
<asp:ControlParameter ControlID="FvChangeOrder$LblProjectID"
Name="ProjectID" PropertyName="Text"/>
</SelectParameters>
</asp:SqlDataSource>
在 DDL SQLDatasource 上省略 WHERE 和 ControlParameter 并在 FormView 的 OnDataBound 方法的代码隐藏中更改 DDL 的 SQL 源会更好吗?
【问题讨论】:
-
测试了你的代码。使用
Eval和Bind(在第一次更改为 Eval 而不测试 Bind 之后)。它两次都有效。 -
所以不是 DDL.SelectedValue 上的绑定/评估导致问题...
-
看起来是这样。但我确实删除了
SelectParameters进行测试,也许问题就出在这里。