Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ';下拉列表1';具有无效的SelectedValue,因为它不在项目列表中。参数名称:value_C#_Asp.net_Gridview - Fatal编程技术网

C# ';下拉列表1';具有无效的SelectedValue,因为它不在项目列表中。参数名称:value

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

我有这段代码,它提供了一个gridview,从2个数据源检索数据。 每行显示订单详细信息,最后一列显示订单状态。 订单状态应可在dropdownlist中更新

<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") %>'