C# ';下拉列表1';具有无效的SelectedValue,因为它不在项目列表中。参数名称:value
我有这段代码,它提供了一个gridview,从2个数据源检索数据。 每行显示订单详细信息,最后一列显示订单状态。 订单状态应可在dropdownlist中更新C# ';下拉列表1';具有无效的SelectedValue,因为它不在项目列表中。参数名称:value,c#,asp.net,gridview,C#,Asp.net,Gridview,我有这段代码,它提供了一个gridview,从2个数据源检索数据。 每行显示订单详细信息,最后一列显示订单状态。 订单状态应可在dropdownlist中更新 <asp:GridView runat="server" AutoGenerateColumns="False" DataSourceID="OrderDataSource" CssClass="DataTables"> <Columns> <asp:CommandField
<asp:GridView runat="server" AutoGenerateColumns="False" DataSourceID="OrderDataSource"
CssClass="DataTables">
<Columns>
<asp:CommandField ShowEditButton="true" />
<asp:BoundField DataField="oID" HeaderText="oId" SortExpression="oId" ReadOnly="true" />
<asp:BoundField DataField="DateOpened" HeaderText="DateOpened" SortExpression="DateOpened"
ReadOnly="true" />
<asp:BoundField DataField="rName" HeaderText="rName" SortExpression="rName" ReadOnly="true" />
<asp:BoundField DataField="DateOfArrival" HeaderText="DateOfArrival" SortExpression="DateOfArrival"
ReadOnly="true" />
<asp:BoundField DataField="Quantity" HeaderText="Quantity" SortExpression="Quantity"
ReadOnly="true" />
<asp:BoundField DataField="sName" HeaderText="sName" SortExpression="sName" ReadOnly="true" />
<asp:TemplateField HeaderText="osName" SortExpression="osName">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="StatusDataSource"
DataTextField="osName" DataValueField="osID" SelectedValue='<%# Bind("osName") %>'>
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("osName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="OrderDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:igroup9_prodConnectionString %>"
SelectCommand="spGetOrdersListForProject" SelectCommandType="StoredProcedure"
UpdateCommand="Update[Orders] set [osID] =@osID where [oID]=@oID">
<SelectParameters>
<asp:ControlParameter ControlID="ProjectIDHolder" DefaultValue="" Name="ProjectID"
PropertyName="Value" Type="Int32" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="osID" Type="Int32" />
<asp:Parameter Name="oID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
<asp:SqlDataSource ID="StatusDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:igroup9_prodConnectionString %>"
SelectCommand="spGetOrderStatus" SelectCommandType="StoredProcedure"></asp:SqlDataSource>
对我来说,错误似乎很明显。DropDownList中的值不包含您试图设置为选定值的值。这可能是因为值来自
osID
列,而所选值来自osName
列。无论最终选择的值是什么,它都应该来自数据源,这意味着您可能应该使用同一列(或外键关系)
你应该把它改成
SelectedValue='<%# Bind("osID") %>'
SelectedValue=''
并确保
spGetOrdersListForProject
返回osID。但dropdownlist源是spGetOrderStatus,它重新返回osID和osName。spGetOrdersListForProject返回:oID、DateOpen、rName、DateOfArrival、Quantity、sName、osName DropDownList源是spGetOrderStatus,但您使用的是osName的选定值,该值不存在。如果可能的值是osID,则必须使用osID。请像我向你们展示的那样尝试一下,看到它的实际应用应该会增加你们的理解力。
SelectedValue='<%# Bind("osID") %>'